R矩阵:由一列唯一,在其他列上添加值并在其他列上连接值

时间:2013-08-08 05:32:04

标签: r matrix dataframe

在R中

我有这个矩阵

> a
     id    size pattern                                 
[1,] "1"   "24"  "100"
[2,] "2"   "10"  "111"
[3,] "3"   "2"   "111"

我希望通过模式独特,添加大小并连接id:

 > a
      id   size pattern                                 
 [1,] "1"    "24"  "100"
 [2,] "2-3"  "12"  "111" (this pattern was duplicated, so add size and concatenate id) 

我能做到:

> a = unique(a[,"pattern"])

但我无法弄清楚如何添加和连接。

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您想要将某些列视为数字(将值一起添加),而将某些列视为字符(粘贴它们),则矩阵不是数据的正确结构。您应该使用数据框。

使用plyr:

library(plyr)
ddply(data.frame(a), .(pattern), summarise, 
      id=paste(id, collapse="-"),
      size=sum(as.numeric(size)))