重塑数据框以在列中创建唯一值列表

时间:2013-12-18 13:21:47

标签: r aggregate reshape

我有数据集:

df <- data.frame(g = c("X", "X", "Y", "Z", "Y", "Z", "Z"),
                 r = c("A", "B", "C", "C", "A", "A", "A"))

我想以一种得到结果的方式操纵数据:

g | [R
X | A B
Y | A C
Z | A C

因此,对于每个g,列出所有唯一的r值。我可以使用reshape包。但我希望能够使用标准R来完成此操作,因为该脚本将与对R知之甚少的人共享。

2 个答案:

答案 0 :(得分:2)

aggregate()怎么样?

aggregate( df$r , by = list( df$g ) , function(x) paste0( sort( unique(x) ) , collapse = "" ) )
#  Group.1  x
#1       X AB
#2       Y AC
#3       Z AC

答案 1 :(得分:1)

尝试一下:

dg <- data.frame(
  g = levels(df$g),
  r = tapply(df$r, df$g, function(n) {paste(sort(unique(n)), collapse = " ")})
  )
> dg
  g   r
X X A B
Y Y A C
Z Z A C