如何将具有不同类型列的“宽”格式的数据集转换为“长”格式,如下例所示?最好使用tidyr(和dplyr等)或一些同样简单的语法。
d_wide <- data.frame(
pair_id=1:3,
name_wife=c('Ana','Maria','Kely'),blood_type_wife=c('A','B','C'), age_wife=c(34,21,55),
name_husb=c('Bob','Peter','John'),blood_type_husb=c('B','O','A'), age_husb=c(31,24,60)
)
d_long <- data.frame(
pair_id=c(1,1,2,2,3,3),
role=c('wife','husb','wife','husb','wife','husb'),
name=c('Ana','Bob','Maria','Peter','Kely','John'),
blood=c('A','B','B','O','C','A'),
age=c(34,31,21,24,55,60)
)
OBS:其他相关的SO问题,例如this,涉及相同类型的列集,全部为数字。然后,这些问题的答案涉及将数据收集(融化)成“超长”格式并传播回所需的长格式。这在这里不起作用,因为变量是不同类型的,因此它们不能用超长格式的相同“值”列表示。