我有数据集:
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知之甚少的人共享。
答案 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