基于关键变量确定R中行之间的一致性

基于关键变量确定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。在这些数据集中,有些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
来实现这一点:

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