簡體   English   中英

如何在R中將列名稱轉換為時間序列名稱?

[英]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$CPIL$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM