合并一个data.frame中的行

时间:2015-10-22 16:13:19

标签: r merge rows

这是一个与merge-two-rows-in-one-dataframe非常相似的问题,但我有字符串变量,只想折叠一些具有相同国家/地区名称的行。我改编了MWER

{{1}}

我希望粘贴可以作为一个函数将empthy单元格与另一行的文本结合起来,但我不知何故得到一行包含更多变量v1.1等等。

1 个答案:

答案 0 :(得分:1)

我们可以使用data.table。我们转换了' data.frame'到' data.table' (setDT(data)),按名称'分组,我们unlist .SDcols中指定的列,paste

library(data.table)
setDT(data)[, unlist(.SD), name, .SDcols=v1:v4][V1!='', paste(V1, collapse=', '), name]

由于没有显示预期的输出,它也可能

setDT(data)[, lapply(.SD, function(x) paste(x[x!=''], collapse='')) , name, .SDcols= v1:v4]

更新

根据预期的输出,我们转换了因素'列(' v1:v4')到'字符'类,然后使用aggregatepaste的公式方法按' name'分组的列。

data[3:6] <- lapply(data[3:6], as.character)
aggregate(.~name, data[-1], FUN=function(x) paste(x[x!=''], collapse=', '))