考虑下面的数据集。数据按每组一人或两人进行分组。但是,一个人可能有几个条目。
df1<-data.frame(group,individualID,X)
> df1
group individualID X
1 1 1 0
2 1 1 1
3 1 2 1
4 1 2 1
5 2 3 1
6 2 3 1
7 3 5 1
8 3 5 1
9 3 6 1
10 3 6 1
11 4 7 0
12 4 7 1 如上所述,组1和组3有2个个体,而组2和组4各有1个个体。
> aggregate(data = df1, individualID ~ group, function(x) length(unique(x)))
group individualID
1 1 2
2 2 1
3 3 2
4 4 1如何将数据子集设置为仅包含具有1个以上个体的组。例如,省略具有1个个体的组。
我应该只得到组1和组3。
发布于 2021-10-12 13:13:03
您可以创建一个查找表来标识具有多个唯一individualID的组(类似于您对aggregate所做的操作),然后根据该表过滤df1:
library(dplyr)
lookup <- df1 %>%
group_by(group) %>%
summarise(count = n_distinct(individualID)) %>%
filter(count > 1)
df1 %>% filter(group %in% unique(lookup$group))
group individualID X
1 1 1 0
2 1 1 1
3 1 2 1
4 1 2 1
5 3 5 1
6 3 5 1
7 3 6 1
8 3 6 1或者,正如@MrGumble上面建议的那样,您也可以在创建lookup之后合并df1
merge(df1, lookup)
group individualID X count
1 1 1 0 2
2 1 1 1 2
3 1 2 1 2
4 1 2 1 2
5 3 6 1 2
6 3 6 1 2
7 3 5 1 2
8 3 5 1 2https://stackoverflow.com/questions/69540985
复制相似问题