![](/img/trans.png)
[英]How to extract longitudinal time-series data from a dataframe in R for time-series analysis and imputation
[英]How to access data name from a list of time-series in R?
我是編程新手,遇到了一個我不知道如何解決的問題。
嘗試按時間序列運行一些測試,例如 adf.test() 和 kpss.test()。 上面的例子是使用 adf.test():
library(tseries)
air = ts(AirPassengers)
co2 = ts(co2)
lista = list(air,co2)
table1 = data.frame()
for (i in lista){ table1 = rbind(table1, adf.test(i))}
結果,它打印:
statistic parameter alternative p.value method data.name
Dickey-Fuller -7.318571 5 stationary 0.0100000 Augmented Dickey-Fuller Test i
2 -2.829928 7 stationary 0.2269262 Augmented Dickey-Fuller Test i
請注意,“data.name”打印的是“i”,而不是“air, co2”。 其他都是正確的。
如何在表格中打印出“空氣”和“二氧化碳”?
它不保留數據的名稱,因為您遍歷列表,因此您的名稱成為迭代變量的名稱,在本例中為i
。 您可以通過重新分配列表中的名稱輕松解決此問題:
table1$data.name <- names(lista)
FWIW,您不需要啟動 table1 然后在這里運行 for 循環。 您可以使用像 do.call(rbind, lapply(lista, adf.test)) @ulfelder 這樣的單行獲得相同的結果(具有相同的問題)
謝謝! 為此,我更改了代碼,因為它得到了以下結果:
# statistic parameter alternative p.value method data.name
#[1,] -7.318571 5 "stationary" 0.01 "Augmented Dickey-Fuller Test" "X[[i]]"
#[2,] -2.829928 7 "stationary" 0.2269262 "Augmented Dickey-Fuller Test" "X[[i]]"
它沒有顯示任何時間序列的名稱。 我剛剛更改了代碼,因此名稱出現:
library(tseries)
lista = list (air = ts(AirPassengers), co2 = ts(co2))
do.call(rbind, lapply(lista, adf.test))
結果如下:
# statistic parameter alternative p.value method data.name
# air -7.318571 5 "stationary" 0.01 "Augmented Dickey-Fuller Test" "X[[i]]"
# co2 -2.829928 7 "stationary" 0.2269262 "Augmented Dickey-Fuller Test" "X[[i]]"
請注意,data.name 仍然得到“X[[i]]”,但在開始時您可以找到“air”和“co2”,它們符合我的要求。
感謝@ulfelder 的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.