有没有办法通过变量group_by,在每个组中str_detect并将结果存储在新列中?

时间:2019-04-04 05:51:47

标签: r dplyr

我想获取一个数据帧,group_by一个变量,然后评估每个组,以查看一个单独的变量是否在该组中的 any 行中包含一个字符串。

使用此信息,我想创建一个包含结果的新列。

如果该组中至少有一行包含字符串,则该组中每行的新列中的值应该为TRUE。 如果该组中没有行包含该字符串,则新列中该组的值应为FALSE

library(dplyr)
library(stringr)

df <- tibble(
    A=c('red','red','red','blue','blue','blue'),
    B=c('yes','no','no','no','no','no')
)

例如,尝试分别检测列B的{​​{1}}和red组的blueA组中的字符串'yes'

df %>%
    group_by(A) %>%
    mutate(yes_in_group = ifelse(str_detect(B, 'yes'), TRUE, FALSE))

我希望看到yes_in_group组的TRUE的每个值都是redFALSE的{​​{1}}的值是blue不尊重团体。

mutate

1 个答案:

答案 0 :(得分:1)

您当前对ifelse的使用无济于事:您将str_detect() / TRUE的输出FALSE转换为{{1 }} / TRUE。要将结果扩展到整个组,可以使用FALSE

any