基于关键变量确定R中行之间的一致性
我有几个包含许多变量的大型数据集。有一个“关键”变量是研究参与者的ID。在这些数据集中,有些ID是重复的。我已经编写了代码来提取重复ID的所有数据,但是我希望有一种方法来检查这些ID的其余变量是否相等。下面是一个简单的例子:基于关键变量确定R中行之间的一致性,r,R,我有几个包含许多变量的大型数据集。有一个“关键”变量是研究参与者的ID。在这些数据集中,有些ID是重复的。我已经编写了代码来提取重复ID的所有数据,但是我希望有一种方法来检查这些ID的其余变量是否相等。下面是一个简单的例子: ID X Y Z 1 2 3 4 1 2 3 5 2 5 5 4 2 5 5 4 3 1 2 3 3 2 2 3 3 1 2 3 在本例中,我希望能够确定ID 1和ID 3的行并不都相等。在R中有什么方法可以做到这一点吗?您可以使用duplicated来实现
ID X Y Z
1 2 3 4
1 2 3 5
2 5 5 4
2 5 5 4
3 1 2 3
3 2 2 3
3 1 2 3
在本例中,我希望能够确定ID 1和ID 3的行并不都相等。在R中有什么方法可以做到这一点吗?您可以使用
duplicated
来实现这一点:
d <- read.table(text='ID X Y Z
1 2 3 4
1 2 3 5
2 5 5 4
2 5 5 4
3 1 2 3
3 2 2 3
3 1 2 3
4 1 1 1', header=TRUE)
tapply(duplicated(d), d[, 1], function(x) all(x[-1]))
## 1 2 3 4
## FALSE TRUE FALSE TRUE
(如果它是一个大数据帧,那么应该提前计算
unique(d)
,而不是调用它两次。)非常感谢,这太完美了!我必须承认,在使用像这样的嵌入式函数时,我非常软弱——这是我绝对应该努力的。再次感谢!
sapply(split(unique(d), unique(d)[, 1]), nrow) == 1
## 1 2 3 4
## FALSE TRUE FALSE TRUE