Я хочу изменить формат с широкого на длинный формат, но у меня есть 2 набора мер переменной. Можно ли использовать один расплав, чтобы получить FData2 ниже. Я хочу использовать один расплав для достижения этой цели. Поскольку у меня есть много наборов, чтобы измениться от широкого до длинного.
Например,
id <- c(1,2,3,4,5,6,7,8,9,10)
Pepsi_Purchase <- c(3,4,5,6,7,8,2,2,3,NA)
Pepsi_Price <- c(NA,NA,4,6,7,8,8,9,6,7)
Coke_Purchase <- c(5,4,5,NA,7,8,2,NA,3,NA)
Coke_Price <- c(5,4,5,5,7,8,2,5,3,NA)
Data <- data.frame(id,Pepsi_Purchase,Coke_Purchase,Pepsi_Price,Coke_Price)
library(reshape2)
PC = melt(Data, id.vars = "id", measure.vars = ( c("Pepsi_Purchase", "Coke_Purchase")), variable.name = "Purvar" , value.name = "Purchase" )
RC = melt(Data, id.vars = "id", measure.vars = ( c("Pepsi_Price", "Coke_Price")),variable.name = "PriVar" , value.name = "Price" )
FData = cbind(PC,RC)
Fdata2 = FData[,c(1,2,5,3,6)]
Желаемый вывод
id Purvar PriVar Purchase Price
1 1 Pepsi_Purchase Pepsi_Price 3 NA
2 2 Pepsi_Purchase Pepsi_Price 4 NA
3 3 Pepsi_Purchase Pepsi_Price 5 4
4 4 Pepsi_Purchase Pepsi_Price 6 6
5 5 Pepsi_Purchase Pepsi_Price 7 7
6 6 Pepsi_Purchase Pepsi_Price 8 8
7 7 Pepsi_Purchase Pepsi_Price 2 8
8 8 Pepsi_Purchase Pepsi_Price 2 9
9 9 Pepsi_Purchase Pepsi_Price 3 6
10 10 Pepsi_Purchase Pepsi_Price NA 7
11 1 Coke_Purchase Coke_Price 5 5
12 2 Coke_Purchase Coke_Price 4 4
13 3 Coke_Purchase Coke_Price 5 5
14 4 Coke_Purchase Coke_Price NA 5
15 5 Coke_Purchase Coke_Price 7 7
16 6 Coke_Purchase Coke_Price 8 8
17 7 Coke_Purchase Coke_Price 2 2
18 8 Coke_Purchase Coke_Price NA 5
19 9 Coke_Purchase Coke_Price 3 3
20 10 Coke_Purchase Coke_Price NA NA
Можно ли сгенерировать FData2 с одним расплавом?