R: изменение формы от широкой к длинной [повторяется]
На этот вопрос уже есть ответ:
Преобразование нескольких наборов столбцов измерений (широкий формат) в отдельные столбцы (длинный формат) 6 ответовУ меня широкий массив данных, который выглядит примерно так:
ID Time Amount CabMean CabNum PartMean PartNum DinnMean DinNum Ex
1 1 1 27 0.654621546 8 NA 7 0.316791872 6 0
2 1 2 82 0.667461321 3 0.327594876 4 0.346798127 2 1
3 1 3 52 0.313976132 1 NA 6 0.197837257 7 0
4 1 4 99 0.798328712 9 0.913751678 4 0.191679538 9 1
Я хотел бы изменить (используя пакет reshape2) его в длинный формат, который принимает эту форму (просто составляя эти числа):
ID Time Amount Ex Type Mean Num
1 1 2 50 0 Cab 0.65654321 7
2 1 2 50 0 Part 0.65654321 1
3 1 2 50 0 Dinn 0.65654321 4
Я пробовал что-то вроде этого:
reshaped <- melt(data, id.vars = c("ID", "Time", "Amount", "Ex"))
Что дает мне что-то вроде этого:
ID Time Amount Ex variable value
1 1 1 10 0 CabMean 0.6565432
2 1 2 12 0 CabMean 0.6565432
Так что я на полпути и не могу разобраться с остальными. Как мне (из кода, который я сейчас использую, или из совершенно нового кода) извлечь тип (Cab, Part, Dinn) как отдельный столбец и создать 2 дополнительных столбца, которые содержат значения Mean и Num?