首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带NAs的cbind()时间序列

不带NAs的cbind()时间序列
EN

Stack Overflow用户
提问于 2012-07-20 03:58:00
回答 1查看 1.5K关注 0票数 4

我观察到,对于重叠时间序列上的许多运算符,只给出重叠部分的结果,这很好:

代码语言:javascript
复制
> (ts1 <- ts(1:5, start=1, freq=3))
Time Series:
Start = c(1, 1) 
End = c(2, 2) 
Frequency = 3 
[1] 1 2 3 4 5
> (ts2 <- ts((7:3)^2, start=2, freq=3))
Time Series:
Start = c(2, 1) 
End = c(3, 2) 
Frequency = 3 
[1] 49 36 25 16  9
> ts1 + ts2
Time Series:
Start = c(2, 1) 
End = c(2, 2) 
Frequency = 3 
[1] 53 41

然而,这似乎不是cbind()的情况。当输出正确对齐时,将为非重叠数据创建NA

代码语言:javascript
复制
> (mts <- cbind(ts1, ts2))
Time Series:
Start = c(1, 1) 
End = c(3, 2) 
Frequency = 3 
         ts1 ts2
1.000000   1  NA
1.333333   2  NA
1.666667   3  NA
2.000000   4  49
2.333333   5  36
2.666667  NA  25
3.000000  NA  16
3.333333  NA   9

有没有一种方法可以在不创建包含NA的行的情况下执行cbind()?或者,如果不是,什么是获取结果并使用NAs剥离行的好方法?这不是一个简单的下标问题,因为这样它就失去了时间序列的性质:

代码语言:javascript
复制
> mts[complete.cases(mts),]
     ts1 ts2
[1,]   4  49
[2,]   5  36

也许是window()的问题,但是计算窗口的开始和结束时间似乎有点麻烦。欢迎任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-20 04:04:54

为什么不直接na.omit结果呢?

代码语言:javascript
复制
> na.omit(cbind(ts1,ts2))
Time Series:
Start = c(2, 1) 
End = c(2, 2) 
Frequency = 3 
         ts1 ts2
2.000000   4  49
2.333333   5  36

如果您想避免na.omitstats:::cbind.ts调用stats:::.cbind.ts,它有一个union参数。您可以将其设置为FALSE并直接调用stats:::.cbind.ts (在创建适当的参数之后):

代码语言:javascript
复制
> stats:::.cbind.ts(list(ts1,ts2),list('ts1','ts2'),union=FALSE)
Time Series:
Start = c(2, 1) 
End = c(2, 2) 
Frequency = 3 
         ts1 ts2
2.000000   4  49
2.333333   5  36

但是na.omit解决方案似乎更简单一点。;-)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11568326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档