Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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 - Fatal编程技术网

R 制作时间序列数据

R 制作时间序列数据,r,R,我有一个时间序列观测数据框架,如下所示 Year/Month APR MAY JUN.......MAR 2012 201 203 208... 2016 2013 220 221 222......2018 2014 .................... . . . . . . 2019 230 235 237 240 我需要这样的数

我有一个时间序列观测数据框架,如下所示

 Year/Month APR MAY JUN.......MAR
    2012     201 203 208...   2016
    2013     220 221 222......2018
    2014      ....................
     .        .
     .        .
     .        .
    2019      230 235 237      240
我需要这样的数据

 Period      Value
Apr-2012      .
May-2012      .  
Jun-2012      .
.
.
.
.
.
Apr-2013
May-2013
Jun-2013
.
.
.
Jan-2019
Feb-2019
Mar-2019       .

一个选项是
collect
将数据收集成“long”格式,并
unite
使用“key”创建“Period”的“年/月”列

library(tidyverse)
library(zoo)
gather(df1, key, val, -`Year/Month`) %>% 
     unite(Period, key, `Year/Month`, sep="-") %>% 
     mutate(Period = as.yearmon(Period, '%b-%Y')) %>%
     arrange(Period)
#    Period val
#1 Apr 2012 201
#2 May 2012 203
#3 Jun 2012 208
#4 Apr 2013 220
#5 May 2013 221
#6 Jun 2013 222
数据
df1您可以执行以下操作:

row.names(df) = df[,1]
with(data.frame(as.table(as.matrix(df[,-1]))),
         data.frame('Year-Month' = paste(Var1,Var2,sep='-'),Value=Freq))
或者,您也可以执行以下操作:

with(cbind(year=df[,1],stack(df[,-1])),
      data.frame(year=paste(year,ind,sep='-'),val=values)[order(year),])

如果包含真实数据帧的内容,则会更容易提供帮助。您可以粘贴来自
dput(mydata)
的输出,其中
mydata
是数据帧名称。您也可以粘贴
dput(head(mydata))
来回答您的问题,只是为了有一个dataseti示例,因为它显示的字符比可以粘贴的字符长。谢谢您的建议。但它的工作方式不同。也就是说,所有的四月月份都是不同年份的月份。但我希望它是一年的所有月份,粘贴在其他年份的所有月份下面,依此类推,使用您的数据,它工作得非常好。但是我们可以通过键入来读取数据而不是提供数据吗?@Nithin.M您可以使用
read.csv/read.table
etc
df1直接读取数据。它工作,但仍然输出,参考您的数据是2012年4月201年4月2013年220等。我想要的是2012年4月201年5月203年4月2013年220年5月2013221@Nithin.M六月的数据在哪里。我没有发现任何差异,除了您没有显示expectedWith First命令中显示的6月份数据,有两个问题。首先,不是年份,而是A、B、C等。其次,所有月份都在一起,而不是年份。我希望一年中的所有月份都在一起。@Nithin.M可能是因为您的第一列不是
year/month
列。当我写
df[,1]
时,这表示年-月列。因此,用适当的列替换它。另外,最后一个问题只是订购的问题。您只需要对数据进行排序。好的,谢谢你抽出时间
with(cbind(year=df[,1],stack(df[,-1])),
      data.frame(year=paste(year,ind,sep='-'),val=values)[order(year),])