[英]How do I convert column names into Time Series names in R?
伙計們 我是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
救命!
非常感謝!
1)對ts
使用lapply
,如下所示:
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
來代替該系列。
> 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.