группировка, а затем проверить два условия с символами переменных R - PullRequest
1 голос
/ 11 февраля 2020

Я хотел бы понять, как проверить два условия в группах с R. Например, если у меня есть:

x <- data.frame("id" = c('A12', 'A12', 'A13', 'A13', 'A14', 'A14'), 
                "var1" = c('a', 'b', 'b', 'c', 'b', 'a'), 
                "var2" = c('x', 'y', 'z', 'z', 'y', 'x'), 
                "var3" = c('h', 'l', 'l', 'h', 'q', 'q),
                stringsAsFactors = FALSE)

для группы с идентификатором A12 являются 'a', 'x' и 'h присутствует в том же ряду?

1 Ответ

0 голосов
/ 11 февраля 2020

После группировки по 'id' нам, возможно, потребуется заключить в any, если во всей группе есть хотя бы одна строка с выполненным условием

library(dplyr)
x %>% 
   group_by(id) %>%
   mutate(flag = any(var1 == 'a' & var2 == 'x' & var3 == 'h'))
# A tibble: 6 x 5
# Groups:   id [3]
#  id    var1  var2  var3  flag 
#  <chr> <chr> <chr> <chr> <lgl>
#1 A12   a     x     h     TRUE 
#2 A12   b     y     l     TRUE 
#3 A13   b     z     l     FALSE
#4 A13   c     z     h     FALSE
#5 A14   b     y     q     FALSE
#6 A14   a     x     q     FALSE

Или другой вариант - paste столбцы, а затем выполните сопоставление строк

library(stringr)
 x %>% 
   group_by(id) %>%
   mutate(flag = any(str_c(var1, var2, var3) == 'axh'))

Если это просто создание столбца TRUE / FALSE, то удалите any и group_by step

...