人。我是R的新手,我正在尝试做一些看起来很简单的事情,虽然我找不到一个好的答案来解决它!
我从Excel导入数据(是的,我知道,但在工作中一切都在Excel中)。
x <- read.table(file = "clipboard", sep = "\t", header=TRUE)
我的数据是这样的:
CPI CoreCPI
1 2.3 3.5
2 2.4 3.5
3 2.3 3.3
4 2.6 3.7
5 2.5 3.7
然后,我试图将每列转换为不同的时间序列:
for (i in 1:ncol(x) {
CPI<-ts(x[,1],start=c(2014,11),end=c(2015,3),frequency=12)
CoreCPI<-ts(x[,2],start=c(2014,11),end=c(2015,3),frequency=12)
}
但我必须重写所有名字!难道不存在R可以保留colnames(x)向量作为每个时间序列的名称吗?
我试过
colnames(x)[,i]<-ts(x[,i],start=c(2014,11),end=c(2015,3),frequency=12)
但我收到错误消息:
Error in paste("serie", i, "sep= ") <- ts(x[, 1], start = c(2014, 11), :
target of assignment expands to non-language object
帮助!
非常感谢!
答案 0 :(得分:0)
1) lapply
使用ts
,如下所示:
L <- lapply(x, ts, start = c(2014, 11), frequency = 12)
提供指定时间序列的列表:
> L
$CPI
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2014 2.3 2.4
2015 2.3 2.6 2.5
$CoreCPI
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2014 3.5 3.5
2015 3.3 3.7 3.7
2)可以附加列表L
,如下所示,但通常最好使用L$CPI
和L$CoreCPI
来引用该系列。< / p>
> attach(L) # creates objects CPI and CoreCPI
> CPI
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2014 2.3 2.4
2015 2.3 2.6 2.5
3)另请注意,可以创建一个多变量时间序列,就像这样:
x_ts <- ts(x, start = c(2014, 11), frequency = 12)
,并提供:
> x_ts
CPI CoreCPI
Nov 2014 2.3 3.5
Dec 2014 2.4 3.5
Jan 2015 2.3 3.3
Feb 2015 2.6 3.7
Mar 2015 2.5 3.7
> x_ts[, "CPI"]
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2014 2.3 2.4
2015 2.3 2.6 2.5