Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将长时间序列数据重塑为宽时间序列数据(每天的时间序列数量不等)_R_Time Series_Reshape - Fatal编程技术网

R 将长时间序列数据重塑为宽时间序列数据(每天的时间序列数量不等)

R 将长时间序列数据重塑为宽时间序列数据(每天的时间序列数量不等),r,time-series,reshape,R,Time Series,Reshape,我的问题是前面问题的延续: 但是有变化。它是1)当每天的小时数不相等时(小)2)当日期的开始时间不同时(大) 例如,让我们创建一个包含1)日期、2)小时、3)一些度量值的数据框——m。在这里,我使用reforme()将长格式转换为宽格式,正如前一篇文章所建议的那样。但是您可以看到输出(dt2),它不是从“m.1”(或者从我们的数据集中的“m.2”)开始创建,而是从“m.3”开始。dt数据集的第一行 dt <- data.frame(Date=as.Date(character()),

我的问题是前面问题的延续:

但是有变化。它是1)当每天的小时数不相等时(小)2)当日期的开始时间不同时(大)

例如,让我们创建一个包含1)日期、2)小时、3)一些度量值的数据框——m。在这里,我使用reforme()将长格式转换为宽格式,正如前一篇文章所建议的那样。但是您可以看到输出(dt2),它不是从“m.1”(或者从我们的数据集中的“m.2”)开始创建,而是从“m.3”开始。dt数据集的第一行

dt <- data.frame(Date=as.Date(character()),
                 File=character(), 
                 User=character(), 
                 stringsAsFactors=FALSE) 

date<-as.Date(c("2018-10-1","2018-10-2","2018-10-4"))
date2<-c(rep(date[1],11),rep(date[2],14),rep(date[3],16))
hour<-c(c(3:13),c(2:15),c(4:19))
m<-rnorm(41)
dt<-data.frame(date2,hour, m)

head(dt)
       date2 hour          m
1 2018-10-01    3 -0.9259174
2 2018-10-01    4  0.4172615
3 2018-10-01    5  0.3981876
4 2018-10-01    6 -0.1894735
5 2018-10-01    7  0.7387315
6 2018-10-01    8  1.2337722

If I use the 
library(reshape) 
dt2<-reshape(dt, idvar =c("date2"), timevar ="hour", direction = "wide")
dt2
        date2        m.3        m.4       m.5        m.6        m.7         m.8        m.9         m.10       m.11      m.12       m.13
1  2018-10-01 -0.9259174  0.4172615 0.3981876 -0.1894735  0.7387315  1.23377223 -0.3740326 -0.007818602 -1.7822049 -1.304608 -1.2114172
12 2018-10-02  0.4961225 -0.6928343 0.5495917  1.9807136 -2.6065999 -1.78083806  1.3777553 -0.543557423 -0.6153750  1.223758 -1.0254392
26 2018-10-04         NA  0.6442237 0.5019143  0.5550032 -1.5300680 -0.08084971  0.5487069  0.618540806  0.3787519  0.219644  0.6488434
        m.2       m.14       m.15      m.16      m.17     m.18      m.19
1        NA         NA         NA        NA        NA       NA        NA
12 -1.54329  0.1743518 -2.3307605        NA        NA       NA        NA
26       NA -1.3063877 -0.6920828 -0.194381 -1.144777 1.585792 -1.320353

dt尝试使用
pivot\u-wide
dt%%变异(hour=str\u c('m.,hour))%%按小时分组%>%变异(rn=row\u-number())%%>%pivot\u-wide(-c(rn,date2),name\u-from='hour',value\u-from='m')
尝试使用
pivot\u-wide
dt%%变异(hour=str c('m(),hour))%%按小时分组%>%%%>%pivot\u加宽(-c(rn,date2),名称\u from='hour',值\u from='m')
dt_full <- data.frame(Date=as.Date(character()),
                 File=character(), 
                 User=character(), 
                 stringsAsFactors=FALSE) 
 udate<-unique(dt$date2)
 ludate<-length(udate)
for(j in 1:ludate){
    dt_sub<-subset(dt,date2==udate[j])

    full_minute<-data.frame(2:19,udate[j])
    colnames(full_minute)<-c("hour","date2")

    dt_sub_full <-full_join(dt_sub,full_minute,by=c("hour"="hour","date2"="date2"))
    o<-order(dt_sub_full["hour"])
    dt_sub_full <-dt_sub_full[o,]
    dt_full <-rbind(dt_sub_full,dt_full)
 }

dt_full2<-reshape(dt_full, idvar =c("date2"), timevar ="hour", direction = "wide")
    dt_full2
         date2      m.2        m.3        m.4       m.5        m.6        m.7         m.8        m.9         m.10       m.11      m.12
17  2018-10-04       NA         NA  0.6442237 0.5019143  0.5550032 -1.5300680 -0.08084971  0.5487069  0.618540806  0.3787519  0.219644
110 2018-10-02 -1.54329  0.4961225 -0.6928343 0.5495917  1.9807136 -2.6065999 -1.78083806  1.3777553 -0.543557423 -0.6153750  1.223758
121 2018-10-01       NA -0.9259174  0.4172615 0.3981876 -0.1894735  0.7387315  1.23377223 -0.3740326 -0.007818602 -1.7822049 -1.304608
          m.13       m.14       m.15      m.16      m.17     m.18      m.19
17   0.6488434 -1.3063877 -0.6920828 -0.194381 -1.144777 1.585792 -1.320353
110 -1.0254392  0.1743518 -2.3307605        NA        NA       NA        NA
121 -1.2114172         NA         NA        NA        NA       NA        NA