Как я могу преобразовать набор данных в «широком» формате, который имеет наборы столбцов разных типов, в «длинный» формат, как в примере ниже? Предпочтительно использовать 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, включают наборы столбцы одного типа, все числовые. Затем ответ в них включает сбор (плавление) данных в «сверхдлинный» формат и распространение обратно в желаемый длинный формат. Здесь это не сработает, поскольку переменные имеют разные типы, поэтому они не могут быть представлены одним и тем же столбцом «значение» в сверхдлинном формате.
melt
из data.table, а не сmelt
из reshape2. - person A5C1D2H2I1M1N2O1R2T1   schedule 21.03.2016name_wife=c('Bob','Peter','John')
должно было бытьname_husb(...)
. - person A5C1D2H2I1M1N2O1R2T1   schedule 21.03.2016gather
описан в этом ответе (на тот же вопрос) в первом списке. - person A5C1D2H2I1M1N2O1R2T1   schedule 21.03.2016