将多列值合并为一列

将多列值合并为一列

我有一个名为“stemmoutput”的数据框(见下文):

     X1      X2       X3      X4      X5      X6      X7     X8     X9    X10
1  tanaman  cabai
2  banget   hama     sakit   tanaman
3  koramil  nogosari melaks  ecek     hama   tanaman padi    ppl    ds   rambun

我想将多列值合并为一列,如下所示:
     TEXT
1  tanaman cabai
2  banget hama sakit tanaman
3  koramil nogosari melaks ecek hama tanaman padi ppl ds rambun

我试过这段代码,它有效
stemmoutput$TEXT <- with(stemmoutput, paste(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10, sep=" "))

但是有没有其他更高效的方法,而不必一一写下列的名称?

我也试过像下面这样的代码,但也没有用。
for(i in names(stemmoutput)){
     stemmoutput$TEXT <- with(stemmoutput, paste(i, sep=" "))}

最佳答案

试试 do.call

library(stringr)
newdat <- data.frame(TEXT=str_trim(do.call(paste, stemmoutput)),
                     stringsAsFactors=FALSE)

newdat
#                                                         TEXT
#1                                                tanaman cabai
#2                                    banget hama sakit tanaman
#3 koramil nogosari melaks ecek hama tanaman padi ppl ds rambun

如果列中有多部分单词,最好使用 , 作为分隔符
 TEXT <- gsub(', [^A-Za-z]+', '', do.call(paste, c(stemmoutput, sep=', ')))

 newdat <- data.frame(TEXT, stringsAsFactors=FALSE)
 newdat
 #                                                                  TEXT
 #1                                                        tanaman, cabai
 #2                                          banget, hama, sakit, tanaman
 #3 koramil, nogosari, melaks, ecek, hama, tanaman, padi, ppl, ds, rambun

关于r - 如何将多列值合并为一列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30277904/

10-12 19:10