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

时间:2015-02-12 02:14:15

标签: r dataframe reshape2

我想将数据框从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 Q5: for V2然后融合每个主题的值ID。在R中有一种简单的方法吗?

2 个答案:

答案 0 :(得分:1)

你可以尝试

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

答案 1 :(得分:1)

您可以使用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