r中的paste,by和data.table

时间:2012-10-30 13:17:13

标签: r data.table

我正在尝试从重新整形的数据集中粘贴字符串。我正在使用data.table包,如下所示:

m<-data.frame(x=rep(c("a","b"),20),y=factor(sample(letters,40,replace=T)))
DT<-data.table(m)
setkey(DT,x)
DT[,paste(y,sep=","),by=x]

但是,除了变量名之外,这只会给出一个与原始帧完全相同的新帧。我希望输出是两个连接的向量,其中变量被粘贴在一起。我怎么能这样做?

2 个答案:

答案 0 :(得分:9)

为了完整性&#39;缘故,官方回答:

如果您使用paste(y,collapse=","),则应该可以使用。

答案 1 :(得分:0)

toString(y)函数产生的结果与paste(y, collapse = ", ")相同,我用它代替了较长的粘贴版本。所以

DT[, toString(y), by = x]

将产生结果

#   x                                                         V1
#1: a v, o, q, p, t, c, y, d, n, r, o, k, v, r, t, n, e, f, g, u
#2: b y, j, t, l, w, r, s, w, b, x, h, j, o, k, a, c, r, c, b, e

与粘贴相同

DT[, paste(y, collapse = ", "), by = x]