我想获取一个数据帧,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
组的blue
和A
组中的字符串'yes'
df %>%
group_by(A) %>%
mutate(yes_in_group = ifelse(str_detect(B, 'yes'), TRUE, FALSE))
我希望看到yes_in_group
组的TRUE
的每个值都是red
,FALSE
的{{1}}的值是blue
不尊重团体。
mutate
答案 0 :(得分:1)
您当前对ifelse
的使用无济于事:您将str_detect()
/ TRUE
的输出FALSE
转换为{{1 }} / TRUE
。要将结果扩展到整个组,可以使用FALSE
:
any