This is a very similar question to merge-two-rows-in-one-dataframe but I have string variables and just want to collapse some rows that have the same country name. I adapted the MWER
data<-data.frame(code= c(345, 346), name= "Yemen", v1= c("", "text1"), v2= c("text2", ""),v3= c("text3", ""),v4= c("", "text4"))
code name v1 v2 v3 v4
345 Yemen text2 text3
346 Yemen text1 text4
aggregate(x=data[c("v1","v2","v3","v4")], by=list(name=data$name), paste)
name v1.1 v1.2 v2.1 v2.2 v3.1 v3.2 v4.1 v4.2
1 Yemen text1 text2 text3 text4
I was hoping paste would work as a function to combine the empthy cell with the text of the other row, but I somehow get one row with more variables v1.1 and so on.
We could use
data.table
. We convert the 'data.frame' to 'data.table' (setDT(data)
), grouped by 'name', weunlist
the columns specified in the.SDcols
, andpaste
it together.As the expected output is not showed, it could be also
Update
Based on the expected output, we convert the 'factor' columns ('v1:v4') to 'character' class, then use the formula method of
aggregate
andpaste
the columns grouped by 'name'.