我df在 R 中有一個資料框:
month abc1 def2 xyz3
201201 1 2 4
201202 2 5 7
201203 4 11 4
201204 6 23 40
我想使用該decompose函式將每一列(其中有約 50 個,每列有約 100 個每月觀察值)轉換為時間序列格式,以便檢查資料中的季節性。
我認為for使用該ts函式的回圈將是最好的方法。我想在下面的回圈中使用一些東西,盡管我意識到使用左側的函式<-會產生錯誤。有沒有辦法動態命名回圈生成的變數?
for(i in 2:ncol(df)) {
paste(names(df[, i]), "_ts") <- ts(df[ ,i], start = c(2012, 1), end = c(2021,11), frequency = 12)
}
uj5u.com熱心網友回復:
你可以試試zoo:
test = data.frame(month=c("201201", "201202", "201203", "201204"), abc1=c(1,2,3,4), def2=c(4,6,7,10), xyz3=c(12,15,16,19))
library(zoo)
ZOO =zoo(test[, c("abc1", "def2", "xyz3")], order.by=as.Date(paste0(test$month, "01"), format="%Y%m%d"))
ts(ZOO, frequency=12)
輸出:
abc1 def2 xyz3
Jan 1 1 4 12
Feb 1 2 6 15
Mar 1 3 7 16
Apr 1 4 10 19
attr(,"index")
[1] 2012-01-01 2012-02-01 2012-03-01 2012-04-01
更新: 現在以正確的頻率。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408649.html
標籤:
