根据唯一/不同值的数量选择组 [英] Select groups based on number of unique / distinct values

查看:68
本文介绍了根据唯一/不同值的数量选择组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有如下数据框

sample <- data.frame(ID = 1:9,
                     Group = c('AA','AA','AA','BB','BB','CC','CC','BB','CC'),
                     Value = c(1,1,1,2,2,2,3,2,3))

ID       Group    Value
1        AA       1
2        AA       1
3        AA       1
4        BB       2
5        BB       2
6        CC       2
7        CC       3
8        BB       2
9        CC       3

我想根据每个组中不同(唯一)值的数量选择组。例如,选择组中所有值都相同(每个组一个不同的值)的组。如果查看组CC,则它具有多个不同的值(2和3),因此应将其删除。其他组只有一个独特的价值,应该保留。所需的输出:

I want to select groups according to the number of distinct (unique) values within each group. For example, select groups where all values within the group are the same (one distinct value per group). If you look at the group CC, it has more than one distinct value (2 and 3) and should thus be removed. The other groups, with only one distinct value, should be kept. Desired output:

ID       Group    Value
1        AA       1
2        AA       1
3        AA       1
4        BB       2
5        BB       2
8        BB       2

您能告诉我R中解决问题的简单快速代码吗?

Would you tell me simple and fast code in R that solves the problem?

推荐答案

您可以为<$ c创建选择器$ c> sample 使用 ave 多种方式。

You can make a selector for sample using ave many different ways.

sample[ ave( sample$Value, sample$Group, FUN = function(x) length(unique(x)) ) == 1,]

sample[ ave( sample$Value, sample$Group, FUN = function(x) sum(x - x[1]) ) == 0,]

sample[ ave( sample$Value, sample$Group, FUN = function(x) diff(range(x)) ) == 0,]

这篇关于根据唯一/不同值的数量选择组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆