根据R中相等的行创建新列

时间:2014-03-21 11:34:59

标签: r if-statement duplicates row match

这是一个简单的问题,关于在不同列中的一个列匹配条件中创建一个以行复制为条件的新列。具体来说,如果该行在#34;对"列中是重复的,则创建新列" new"基于列中的行" y"平等/不平等。

在实际数据框中,我对其他列有更多条件,但我的主要问题是使这些条件依赖于"对"中的行是相同的。柱。

非常感谢!

pairs y   new    

 1    1    1    
 1    0    1      
 2    1    0     
 2    1    0    
 3    3    1
 3    1    1

1 个答案:

答案 0 :(得分:1)

假设值始终是成对的,即每组中只有两行:

DF <- read.table(text="pairs y   new    
1    1    1    
1    0    1      
2    1    0     
2    1    0    
3    3    1
3    1    1", header=TRUE)

library(plyr)
#for integers:
ddply(DF, .(pairs), transform, new1 = 1*(diff(y) != 0L))
#for numerics:
ddply(DF, .(pairs), transform, new1 = 1*(abs(diff(y)) > .Machine$double.eps ^ 0.5))