我们可以使用data.table
。我们将“data.frame”转换为“data.table”(setDT(data)
),按“名称”分组,我们unlist
中指定的列.SDcols
, and 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]
Update
根据预期的输出,我们将“factor”列(“v1:v4”)转换为“character”类,然后使用公式方法aggregate
and paste
按“名称”分组的列。
data[3:6] <- lapply(data[3:6], as.character)
aggregate(.~name, data[-1], FUN=function(x) paste(x[x!=''], collapse=', '))