提问者:小点点

在另一列r中按值折叠字符向量[重复]


我有一个数据框,其中一列中包含一组字符串,另一列中包含一个分组变量(一个字符串,但可能是一个因子)。我想折叠数据框,以便通过分组变量将字符串折叠成元素。对于信息,然后我将在该向量上使用Corpus(VectorSource(x))(即,我折叠以创建文档)。

所以举个例子:

    eg           Type
1   tomato        F 
2   mushrooms     F
3   snow          W
4   chips         F
5   rain          W

这将被转换为具有两个元素的字符向量,“W”的成员和“F”的成员。我知道我可以使用:

a <- paste(x$eg,collapse=" ")

要获取所有这些,当然只需手动创建子集(或循环)。我想知道是否有plyr函数(但看不到),我认为t应用by可能是我要找的(在基础上),但我不清楚它们在这里是如何使用的。

我不想在这里输出数据帧,但是探索标记的重复项,这些方法清楚地适用于这个问题。


共2个答案

匿名用户

使用data. table包回答:

> dt <- data.table(eg = letters[1:8], Type=rep(c("F","W"), 4))
> a <- dt[, paste(eg, collapse=" "), by=Type]
> a
   Type      V1
1:    F a c e g
2:    W b d f h

使用data. table的好处是,即使您获得了数百万行,它仍然会在几秒钟内运行。

匿名用户

刚刚找到答案,这应该可以从plyr包中工作:

a <- vaggregate(x$eg,x$Type,function(y) paste0(y,collapse=" "))

编辑:请参阅下面的注释-函数(y)是多余的,这可以从base完成