这是一个与merge-two-rows-in-one-dataframe非常相似的问题,但我有字符串变量,只想折叠一些具有相同国家/地区名称的行。我改编了MWER
{{1}}
我希望粘贴可以作为一个函数将empthy单元格与另一行的文本结合起来,但我不知何故得到一行包含更多变量v1.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')到'字符'类,然后使用aggregate
和paste
的公式方法按' name'分组的列。
data[3:6] <- lapply(data[3:6], as.character)
aggregate(.~name, data[-1], FUN=function(x) paste(x[x!=''], collapse=', '))