楼主: 角尖
6107 10

[问答] 求一个补齐时间序列的函数 [推广有奖]

  • 1关注
  • 2粉丝

博士生

87%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
36.4494
学术水平
3 点
热心指数
3 点
信用等级
2 点
经验
3154 点
帖子
199
精华
0
在线时间
347 小时
注册时间
2008-6-10
最后登录
2025-1-6

楼主
角尖 发表于 2016-1-27 22:53:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一组时间序列数据,如
时间为:  2016-01-22  2016-01-23  2016-01-26  2016-01-27
序列里面没有 2016-01-24 2016-01-25,怎么才能把这两个自动补齐?


(其实有600多个数据,那几个时间点没有数据,都找不到,所以手动无法补齐,更想有一个自动补齐的办法)


如果我还想将序列扩充到2016-01-20 至2016-01-30,那么我应该怎么办?


求指点!

二维码

扫码加我 拉你入群

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

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

关键词:时间序列 时间序列数据 序列数据 求指点 怎么办

已有 1 人评分经验 收起 理由
happy_287422301 + 100 鼓励积极发帖讨论

总评分: 经验 + 100   查看全部评分

沙发
角尖 发表于 2016-1-27 22:53:48
是  哪几个时间点缺数据,都没办法找到,所以手动补齐,都不成
已有 1 人评分论坛币 收起 理由
happy_287422301 + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

藤椅
happyqj 学生认证  发表于 2016-1-28 10:53:33
不明白楼主说的自动补齐是什么意思?我理解楼主想要的补齐其实是一种自动插值。如果是这样的话,楼主要自己决定插值方法是什么,直线插值,spline插值,均值插值等等。要先自己想清楚原则,才能决定程序代码写法。
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
happy_287422301 + 60 + 1 + 1 鼓励积极发帖讨论

总评分: 论坛币 + 60  学术水平 + 1  热心指数 + 1   查看全部评分

板凳
治感冒 发表于 2016-1-28 11:04:31
自己建一个全的数据框,然后合并?

报纸
角尖 发表于 2016-1-28 13:49:54
自己再顶一下,再求人咨询下。
@happyqj  不是说插值,而是这样:
所有的时间序列应该是包括两个部分,分别是数值(count)部分和时间(time)部分
现在就是time部分少一部分,就是从2016-01-05到2016-01-20之间有几天没有,怎么办?
已有 1 人评分论坛币 收起 理由
happy_287422301 + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

地板
hoppanda 发表于 2016-1-28 14:19:19
如果是用R的话.. 把你这个数据转成Date格式.. 他自动补齐
已有 1 人评分论坛币 收起 理由
happy_287422301 + 40 热心帮助其他会员

总评分: 论坛币 + 40   查看全部评分

7
角尖 发表于 2016-1-29 14:46:37
hoppanda 发表于 2016-1-28 14:19
如果是用R的话.. 把你这个数据转成Date格式.. 他自动补齐
没有啊。
time.1<-c("2016-01-06","2016-01-07","2016-01-08","2016-01-09",
          "2016-01-10","2016-01-11","2016-01-18","2016-01-19")
time.date<-as.Date(time.1)

> time.date
[1] "2016-01-06" "2016-01-07" "2016-01-08" "2016-01-09" "2016-01-10" "2016-01-11"
[7] "2016-01-18" "2016-01-19"
已有 1 人评分论坛币 收起 理由
happy_287422301 + 40 补偿

总评分: 论坛币 + 40   查看全部评分

8
角尖 发表于 2016-1-29 15:10:53
再求一个问吧
> plot(xts.spec.15)
Error in as.POSIXlt.POSIXct(.POSIXct(.index(x)), tz = indexTZ(x)) :
  invalid 'tz' value
已有 1 人评分论坛币 收起 理由
happy_287422301 + 20 补偿

总评分: 论坛币 + 20   查看全部评分

9
hoppanda 发表于 2016-2-28 22:44:38
角尖 发表于 2016-1-29 14:46
没有啊。
time.1
... R是在后台自动帮你补齐.. 别把你自己说乱..

现在你有两列数据,第一列是时间,第二列是某变量在对应时间的显示值

第一列数据的格式“yyyy-mm-dd”转成Date格式以后,你可以用as.numeric检查,R在后台帮你自动计算好了某日期距离origin的天数,一般origin好像是1910-01-01(查下R核实)。重这个意义上来说,R已经帮你在后台补齐所有日期了.. 这个变化的具体意义在于,举个例子,作图。
       现在做某变量(y轴)对应时间(x轴)的的图.. 如果你的第一列不是时间型数据,那么,为了作图,你只能手动的先将y值按行数在图上画出来,namely, plot(data$y~c(1:nrow(data)),xaxt="n"), 然后,在x轴填上日期,这个日期是按照行数填的,namely, axis(1,at=1:nrow(data),labels=data$time)。这样一来,1月10日,1月11日,1月18日,这三个时间点在X轴上都距离一个单位。 如果日期是时间型数据,那么这三个时间点,第一个与第二个相差1个单位距离,第二个与第三个相差7个单位距离。

你想插入几个行,有日期没数据,这样也很简单,如果就一两个日子就直接手打,如果多的话,比如要2016-01-01~ 2016-01-31就用paste("2016","01",1:31,sep="-"), 补齐以后再转时间型数据..但是没有对应数据,我觉的这么做没什么意义.. 如果你想插值.. 前面happypj已经讲了.. 先选好插值方法,再填值,当然,这个情况下还是需要日期已经是时间型数据

10
G__HOST 发表于 2017-6-13 17:14:37
楼主大神   请教下后面扩展部分的数据是怎么处理的呢

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 22:56