R:重塑和扩展R中的数据框

库尔德

我在R中的示例数据帧如下所示:

     NAME  ID SURVEY_YEAR REFERENCE_YEAR CUMULATIVE_SUM CUMULATIVE_SUM_REFYEAR
1 NAME1  47        1960           1959             -6                      0
2 NAME1  47        1961           1960            -10                     -6
3 NAME1  47        1963           1961             NA                     NA
4 NAME1  47        1965           1963            -23                    -10
5 NAME2 259        2007           2004             -9                      0
6 NAME2 259        2009           2007             NA                     NA
7 NAME2 259        2010           2009             NA                     NA
8 NAME2 259        2011           2010             NA                     NA
9 NAME2 259        2014           2011            -40                     -9

我正在尝试做的是按照以下方式重新排列数据框。

NAME    ID  time            YEAR    CUMULATIVE_SUM  id
NAME1   47  REFERENCE_YEAR  1959    0               1
NAME1   47  SURVEY_YEAR     1960    -6              1
NAME1   47  REFERENCE_YEAR  1960    -6              2
NAME1   47  SURVEY_YEAR     1961    -10             2
NAME1   47  REFERENCE_YEAR  1961    NA              3
NAME1   47  SURVEY_YEAR     1963    NA              3
NAME1   47  REFERENCE_YEAR  1963    -10             4
NAME1   47  SURVEY_YEAR     1965    -23             4
NAME2   259 REFERENCE_YEAR  2004    0               5
NAME2   259 SURVEY_YEAR     2007    -9              5
NAME2   259 REFERENCE_YEAR  2007    NA              6
NAME2   259 SURVEY_YEAR     2009    NA              6
NAME2   259 REFERENCE_YEAR  2009    NA              7
NAME2   259 SURVEY_YEAR     2010    NA              7
NAME2   259 REFERENCE_YEAR  2010    NA              8
NAME2   259 SURVEY_YEAR     2011    NA              8
NAME2   259 REFERENCE_YEAR  2011    -9              9
NAME2   259 SURVEY_YEAR     2014    -40             9    

我正在尝试通过以下方式进行操作,但这并不是我想要的。

# read in data
data <- data.frame(NAME=c("NAME1", "NAME1","NAME1","NAME1","NAME2","NAME2","NAME2","NAME2","NAME2"),
                   ID=c(47,47,47,47,259,259,259,259,259),
                   SURVEY_YEAR=c(1960,1961,1963,1965,2007,2009,2010,2011,2014), 
                   REFERENCE_YEAR=c(1959,1960,1961,1963,2004,2007,2009,2010,2011),
                   CUMULATIVE_SUM=c(-6,-10,NA,-23,-9,NA,NA,NA,-40),
                   CUMULATIVE_SUM_REFYEAR=c(0,-6,NA,-10,0,NA,NA,NA,-9))  

# reshape data  
dat3 <- reshape(data, direction="long",
                    varying = list(c("SURVEY_YEAR","REFERENCE_YEAR"), c("CUMULATIVE_SUM","CUMULATIVE_SUM_REFYEAR")), 
                    v.names=c("YEAR","CUMULATIVE_SUM"), times = c("SURVEY_YEAR", "REFERENCE_YEAR"))

有谁知道如何正确重塑数据框,使其与上面所需的解决方案相对应?谢谢。

大卫·阿伦堡(David Arenburg)

只需重新排序您已有的数据

dat3 <- dat3[with(dat3, order(NAME, ID, YEAR, id)), ]

或者如果您想要高性能

library(data.table)
setkey(setDT(dat3), NAME, ID, YEAR, id)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章