选择每个组具有多个不同值的组 [英] Select groups with more than one distinct value per group
本文介绍了选择每个组具有多个不同值的组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有如下数据:
ID category class
1 a m
1 a s
1 b s
2 a m
3 b s
4 c s
5 d s
我想通过仅包括那些具有几个(> 1
)不同类别的"ID"来设置数据子集。
我的预期输出:
ID category class
1 a m
1 a s
1 b s
有什么方法可以做到这一点吗?
我已尝试
library(dplyr)
df %>%
group_by(ID) %>%
filter(n_distinct(category, class) > 1)
但它给了我一个错误:
# Error: expecting a single value
推荐答案
使用data.table
library(data.table) #see: https://github.com/Rdatatable/data.table/wiki for more
setDT(data) #convert to native 'data.table' type by reference
data[ , if(uniqueN(category) > 1) .SD, by = ID]
uniqueN
是length(unique())
的(快速)本机掩码,而.SD
只是整个data.table
(在更一般的情况下,它可以表示列的子集,例如当.SDcols
参数被激活时)。因此,基本上中间的语句(j
,列选择参数)表示返回与至少有两个不同值category
的ID
相关联的所有列和行。
使用by
参数可扩展到包含Counts ok多列的案例。
这篇关于选择每个组具有多个不同值的组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文