Выберите нечетные строки из определенного столбца в кадре данных - PullRequest
1 голос
/ 06 июня 2019

У меня есть большой df с определенным столбцом numeric с именем Amount.

df = data.frame(Amount = c(as.numeric(1:14)), stringsAsFactors = FALSE)

Я хочу выбрать нечетные строки. До сих пор я пытался с синтаксисом ниже, но я всегда получаю следующие сообщения об ошибках:

df$Amount[c(FALSE, TRUE),]

Ошибка в df $ Amount [c (FALSE, TRUE),]: неверное количество измерений

seq_len(ncol(df$Amount)) %% 2

Ошибка в seq_len (ncol (df $ Amount)): аргумент должен быть приведен к неотрицательному целому числу Дополнительно: предупреждающее сообщение: В seq_len (ncol (df $ Amount)): первый элемент, использованный в аргументе length.out

odd = seq(1,14,1)
df$Amount[odd,1]

Ошибка в журнале P20 $. Количество [четное, 1]: неверное количество измерений

P20$Journal.Amount[seq(2,length(14), 2),]

Ошибка в seq.default (2, length (14), 2): неверный вход в аргумент 'by'

Мой вопрос: Есть ли способ, которым я могу сделать это напрямую? Я пытался с решениями вопросов, ранее опубликованных, но до сих пор у меня есть эти сообщения об ошибках. BaseR предпочтительно.

1 Ответ

1 голос
/ 06 июня 2019

Индекс row/column используется при наличии нечетких атрибутов.vector не имеет его.

is.vector(df$Amount)

Если мы извлечем вектор, то просто воспользуемся индексом строки

df$Amount[c(FALSE, TRUE)]

Если мы хотим создать подмножество строк набора данных,

df[c(FALSE, TRUE), 'Amount', drop = FALSE]

В приведенном выше коде мы указываем индекс строки (i), 'j' - индекс столбца или имя столбца, а drop (?Extract - по умолчанию drop = TRUE для data.frame).Итак, нам нужно указать drop = FALSE, чтобы не потерять размеры и привести к вектору)

...