通过考虑一列来合并两行n维

时间:2014-02-03 12:34:09

标签: r merge rows

我有一个矩阵,它是在使用cbind()

后形成的
   ! ? c e i k l t
dif     0 0 1 0 0 0 
dor     1 0 0 0 0 0
dor     0 0 0 0 0 1
same    0 0 0 1 0 0 
same    0 1 0 0 0 0

在R中建议我可以合并以下行的代码


   ! ? c e i k l t
same    1 1 0 1 0 0 
dif     0 0 1 0 0 0 
dor     1 0 0 0 0 1

谢谢..

3 个答案:

答案 0 :(得分:0)

df<-read.table(header=T,text="ID c e i k l t
dif     0 0 1 0 0 0 
dor     1 0 0 0 0 0
dor     0 0 0 0 0 1
same    0 0 0 1 0 0 
same    0 1 0 0 0 0")

require(plyr)

ddply(df,.(ID),function(x)colSums(x[,-1]))

    ID c e i k l t
1  dif 0 0 1 0 0 0
2  dor 1 0 0 0 0 1
3 same 0 1 0 1 0 0

答案 1 :(得分:0)

命令承认:

aggregate(df[, -1], list(df[, 1]), function(x) {
  Reduce("|", x)
})
#   Group.1 c e i k l t
# 1     dif 0 0 1 0 0 0
# 2     dor 1 0 0 0 0 1
# 3    same 0 1 0 1 0 0

答案 2 :(得分:0)

你想要总和,还是想要逻辑OR:

逻辑OR:

require(functional)
aggregate(. ~ ID, data=df, FUN=Compose(any, as.numeric))
    ID c e i k l t
1  dif 0 0 1 0 0 0
2  dor 1 0 0 0 0 1
3 same 0 1 0 1 0 0

和:

aggregate(. ~ ID, data=df, FUN=sum)

这里的结果是一样的。