Вернуть значение строки, учитывая некоторые условия в строках - PullRequest
0 голосов
/ 20 декабря 2018

Когда я делю данные на подмножества, я делаю субсет на основе некоторых значений или по группе строк следующим образом:

# Subset on some values
df<-df[df$A=='some values',]
# Subset on Group of Rows
df<-df[1:10,]

Однако, есть ли способ объединить эти два метода?

Мне нужно иметь возможность получить первые 7 строк кадра данных, затем выполнить поиск по столбцу с условиями и вернуть значение в другой столбец.

Так что, если у меня есть эти данные:

col_with_conditions<-c(1,2,3,4,5,1,2,3,4,5)
col_to_return<-c(10,10,10,20,20,20,10,20,10,20)
df<-data.frame(col_with_conditions,col_to_return)
col_with_conditions col_to_return
             1            10
             2            10
             3            10
             4            20
             5            20
             1            20
             2            10
             3            20
             4            10
             5            20

Я хотел бы найти значения 1 и 2, а затем вернуть первое значение в col_to_return.В этом примере код вернет 10.

Другой пример:

col_with_conditions<-c(5,2,2,3,4,5)
col_to_return<-c(20,10,10,10,20,10)
df<-data.frame(col_with_conditions,col_to_return)

также вернет 10.

Другой пример:

col_with_conditions<-c(5,2,4,3,4)
col_to_return<-c(20,20,20,10,20)
df<-data.frame(col_with_conditions,col_to_return)

вернет 20.

Однако, этот пример:

col_with_conditions<-c(5,3,4,3,4)
col_to_return<-c(20,20,20,10,20)
df<-data.frame(col_with_conditions,col_to_return)

должен вернуть NA, который яможно преобразовать в 0 в другом месте.Иногда датафрейм не всегда имеет эти значения 1 or 2.

Возможно ли это сделать за один шаг?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Использование dplyr для удобства чтения:

library(dplyr)
df %>% 
  head(7) %>% 
  filter(col_with_conditions %in% c(1, 2)) %>% 
  .$col_to_return %>% 
  .[1]

должно вернуть то, что вы ищете.

0 голосов
/ 20 декабря 2018

Один из способов будет

df$col_to_return[df$col_with_conditions[1:7] %in% c(1, 2)][1]
#[1] 10

Это также будет действовать, когда нет значения, соответствующего условию, и будет возвращено NA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...