请选择 进入手机版 | 继续访问电脑版
楼主: yscapital
1823 7

[问答] 使用R读取时间序列的小问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

25%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9237 点
帖子
25
精华
0
在线时间
57 小时
注册时间
2012-10-25
最后登录
2021-8-18

yscapital 发表于 2017-3-30 11:32:57 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大虾们,请教一个弱弱的问题,我现在有个数据文件里面的数据是时间序列“sdata.text”,大致是这样的:

  1.        Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  2. 1973  55  60  68  63  65  61  54  52  46  42  37  30
  3. 1974  37  44  55  53  58  50  48  45  41  34  30  24
  4. 1975  29  34  44  54  57  51  51  53  46  46  46  39
  5. 1976  41  53  55  62  55  56  57  59  58  55  49  47
  6. 1977  57  68  84  81  78  74  64  74  71  63  55  51
复制代码
第一行是月份,第一列是年份。
我现在想把这个数据读入到R中,想让得到的数据是时间序列,该用什么代码?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:时间序列 小问题 数据读入 Data 数据文件 读取数据 时间序列

回帖推荐

johnmy 发表于4楼  查看完整内容

readr中的read_table自己调整一下参数试试,你自己再命名行名
一起进步。
yscapital 发表于 2017-3-30 11:43:03 |显示全部楼层 |坛友微信交流群
直接用scan()或者read.table()读出来总有问题,它会把第一列当作一个变量而不是年份标志。我想让读入后得到的结果直接就是以第一列为年份,第一行为月份的一个频率为月度的时间序列。该如何?

使用道具

yscapital 发表于 2017-3-30 12:24:27 |显示全部楼层 |坛友微信交流群
如果数据是这样的:
  1. 55  60  68  63  65  61  54  52  46  42  37  30
  2. 37  44  55  53  58  50  48  45  41  34  30  24
  3. 29  34  44  54  57  51  51  53  46  46  46  39
  4. 41  53  55  62  55  56  57  59  58  55  49  47
  5. 57  68  84  81  78  74  64  74  71  63  55  51
复制代码


即没有第一列和第一行的情况下,我可以这样:
  1. yt<-read.table("d:/sdata.txt")
复制代码
把数据读入到yt中。
然后使用:
  1. yt2<-ts(yt,frequency=12,satrt=c(1973,1))
复制代码
把读入的数据转化为时间序列。
现在我困惑的地方是,当数据文件本身含有月份和年份的情况下,我该怎么读,就是我在帖子列出的情况,如果数据是如下形式该如何读入到R:

  1.      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  2. 1973  55  60  68  63  65  61  54  52  46  42  37  30
  3. 1974  37  44  55  53  58  50  48  45  41  34  30  24
  4. 1975  29  34  44  54  57  51  51  53  46  46  46  39
  5. 1976  41  53  55  62  55  56  57  59  58  55  49  47
  6. 1977  57  68  84  81  78  74  64  74  71  63  55  51
复制代码


请R大虾们帮我解释一下这个疑惑。太感谢了!
一起进步。

使用道具

johnmy 发表于 2017-3-31 11:52:27 |显示全部楼层 |坛友微信交流群
readr中的read_table自己调整一下参数试试,你自己再命名行名
  1. library(tidyverse)
  2. read_table("d:/sdata.txt",skip = 1,col_names = F)
  3. #or
  4. read.table("tt.txt",skip = 1,header = F)
复制代码



使用道具

yscapital 发表于 2017-4-6 10:11:43 |显示全部楼层 |坛友微信交流群
johnmy 发表于 2017-3-31 11:52
readr中的read_table自己调整一下参数试试,你自己再命名行名
谢谢大虾的回复。我想跟你继续探讨一下。
对于数据类型如下的可以直接用read.table("d:/sdata.txt")读取:
  1. 55  60  68  63  65  61  54  52  46  42  37  30
  2. 37  44  55  53  58  50  48  45  41  34  30  24
  3. 29  34  44  54  57  51  51  53  46  46  46  39
  4. 41  53  55  62  55  56  57  59  58  55  49  47
  5. 57  68  84  81  78  74  64  74  71  63  55  51
复制代码
其中每行表示1年,每列表示12个月,读取后,再用ts()可以把它转化为周期为月度的时间序列。


对于数据类型如下的 同样 也可以直接用read.table("d:/sdata.txt",header=true)读取:
  1. Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  2. 55  60  68  63  65  61  54  52  46  42  37  30
  3. 37  44  55  53  58  50  48  45  41  34  30  24
  4. 29  34  44  54  57  51  51  53  46  46  46  39
  5. 41  53  55  62  55  56  57  59  58  55  49  47
  6. 57  68  84  81  78  74  64  74  71  63  55  51
复制代码
然后同理用ts()来转化

那么,如果处理有列标题,每行的年份也是确定,我该如何来读取呢?比如如下的:
  1.      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
  2. 1973  55  60  68  63  65  61  54  52  46  42  37  30
  3. 1974  37  44  55  53  58  50  48  45  41  34  30  24
  4. 1975  29  34  44  54  57  51  51  53  46  46  46  39
  5. 1976  41  53  55  62  55  56  57  59  58  55  49  47
  6. 1977  57  68  84  81  78  74  64  74  71  63  55  51
复制代码
这种用read.table读取后得到的数据是一个list数据,我该如何把它转化为时间序列?大侠,请帮忙释疑。



使用道具

读取后得到的可以用as.vector转化为向量,如果不行,先用as.matrix转化为矩阵,再用as.vector转化后ts转化为时间序列

使用道具

yscapital 发表于 2017-6-22 14:50:24 |显示全部楼层 |坛友微信交流群
彼岸花开花 发表于 2017-4-8 22:08
读取后得到的可以用as.vector转化为向量,如果不行,先用as.matrix转化为矩阵,再用as.vector转化后ts转化为 ...
非常感谢。

使用道具

齐物论pi 学生认证  发表于 2017-6-27 20:54:13 来自手机 |显示全部楼层 |坛友微信交流群
不错呦

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 22:38