首页 > 解决方案 > 查找观察是否在组内出现背靠背

问题描述

我有:

df<-data.frame(group=c(1, 1,1, 1,1, 2, 2, 2, 4,4,4,4, 5,5,5,5,5,5,5,5,5,5,5), 
               value=c("A","B","A","A","A","B","A","B","A","A","D","A","B","B","B","B","B","A","A","A","A","A","A"),
            want=c("yes","yes","yes","yes","yes", "no","no","no", "no","no","no", "no","yes","yes","yes", "yes","yes","yes", "yes" ,"yes","yes","yes","yes" ))

   group value want
1      1     A  yes
2      1     B  yes
3      1     A  yes
4      1     A  yes
5      1     A  yes
6      2     B   no
7      2     A   no
8      2     B   no
9      4     A   no
10     4     A   no
11     4     D   no
12     4     A   no
13     5     B  yes
14     5     B  yes
15     5     B  yes
16     5     B  yes
17     5     B  yes
18     5     A  yes
19     5     A  yes
20     5     A  yes
21     5     A  yes
22     5     A  yes
23     5     A  yes

我基本上想在我的“想要”中找出值“A”是否在一个组中的某个地方连续出现至少 3 次。

标签: r

解决方案


library(dplyr)
df %>%
    group_by(group) %>%
    mutate(temp = with(rle(as.character(value)), any(values == "A" & lengths >= 3)))

推荐阅读