【发布时间】:2017-12-12 23:24:40
【问题描述】:
我正在努力重塑 12 个单独的列表元素 [它们采用数据框格式] 并使值保持正确的顺序。这些是按天进行的测量,value 1 对应于每月的第一天测量,依此类推,直到 value 31,最大可能的天数/月。这是在一个水平。对于少于 31 天的缺失测量/月,将出现 -9999。 -9999 不是这里的问题。
> myplist[[1]]
COOPID YEAR MONTH ELEMENT value 1 value 2 value 3 value 4 value 5 value 6
3 170100 1982 9 PRCP 0 70 15 0 0 0
8 170100 1982 10 PRCP 0 10 0 0 0 0
13 170100 1982 11 PRCP 2 13 0 170 0 5
18 170100 1982 12 PRCP 0 0 0 0 2 5
23 170100 1983 1 PRCP 2 0 0 0 0 10
28 170100 1983 2 PRCP -9999 0 0 52 6 0
我的目标是让列表元素垂直排列,这样每一天都有自己的行,所以它看起来像这样:
> myplist[[1]]
YEAR MONTH DAY PRCP
1982 9 1 0
1982 9 2 70
1982 9 3 15
我试过这段代码:
melt(myplist[[1]], id.vars = c("COOPID", "YEAR", "MONTH", "ELEMENT"))
但它列出了每个月的value 1,而不是value 1、value 2、...、value 31的所需序列。
COOPID YEAR MONTH ELEMENT variable value
1 170100 1982 9 PRCP value 1 0
2 170100 1982 10 PRCP value 1 0
3 170100 1982 11 PRCP value 1 2
4 170100 1982 12 PRCP value 1 0
5 170100 1983 1 PRCP value 1 2
这段代码返回了这个不需要的输出和错误:
> reshape(myplist[[1]], idvar = c("YEAR","MONTH"),varying =print(paste0("value",1:31)),sep = "",
+ timevar = c("YEAR","MONTH"),direction = "long")
[1] "value1" "value2" "value3" "value4" "value5" "value6" "value7" "value8" "value9" "value10"
[11] "value11" "value12" "value13" "value14" "value15" "value16" "value17" "value18" "value19" "value20"
[21] "value21" "value22" "value23" "value24" "value25" "value26" "value27" "value28" "value29" "value30"
[31] "value31"
Error in `[.data.frame`(data, , varying.i) : undefined columns selected
我也尝试了 dcast 无济于事,并且在这个和其他网站上提出的其他问题似乎没有解决我遇到的问题。我认为问题的根源在于我的年份范围每个月的天数是可变的(到给定月份的实际最后一天),但我的测量数据中的每个月都有 31 天的值。
【问题讨论】: