重塑数据框并设置标志变量

Reshaping a data frame and setting flag variables

我想将我的数据框从 df1 重塑为 df2,如下所示:

df1 <-

ID  TIME  RATEALL  CL  V1  Q  V2
1    0      0      2.4 10  6  20
1    1      2      0.6 10  6  25
2    0      0      3.0 15  7  30
2    5      3      3.0 16  8  15

变成这样的长格式:

df2 <- 

ID  var  TIME  value
 1   1    0     0
 1   1    1     2
 1   2    0     2.4
 1   2    1     10
 1   3    0     6
 1   3    1     6
 1   4    0     20
 1   4    1     20 
 2   1    0     3.0
 2   1    1     3.0
 AND so on ...

基本上我想给一个标志变量(1: for RATEALL2:for CL3:for V14:for Q,和5: for V2然后融化值每个主题 ID。在 R 中是否有一种简单的方法可以做到这一点?

你可以试试

df2 <- reshape2::melt(df1, c("ID", "TIME"))
names <- c("RATEALL"=1, "CL"=2, "V1"=3, "Q"=4, "V2"=5)
df2$variable <- names[df2$variable]

你可以使用 tidyr/dplyr

library(tidyr)
library(dplyr)
res <- gather(df1,var, value, RATEALL:V2) %>% 
             mutate(var= as.numeric(factor(var)))
head(res)
#  ID TIME var value
#1  1    0   1   0.0
#2  1    1   1   2.0
#3  2    0   1   0.0
#4  2    5   1   3.0
#5  1    0   2   2.4
#6  1    1   2   0.6