【问题标题】:creating new column based on rows being equal in R基于R中相等的行创建新列
【发布时间】:2014-04-28 18:09:10
【问题描述】:

这是一个简单的问题,关于在不同列中的一个列匹配条件中以行重复为条件创建一个新列。具体来说,如果该行在“pairs”列中重复,则根据“y”列中的行是否相等/不相等来创建新列“new”。

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

非常感谢!

pairs y   new    

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

【问题讨论】:

    标签: r if-statement duplicates row match


    【解决方案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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多