2016-11-14 64 views
0

我有一個數據框轉換爲ts對象,並保留列名稱,但由於某些原因,它將rownames替換爲了指示符。如何重命名R中的時間序列對象的行

真正奇怪的事情是,當我做row.names(deaths.ts)我得到:

[1] "1980" "1981" "1982" "1983" "1984" "1985" "1986" "1987" "1988" "1989" "1990" 
[12] "1991" "1992" "1993" "1994" "1995" "1996" "1997" "1998" 

,但實際上是試圖查看輸出給:

Time Series: 
Start = 1 
End = 19 
Frequency = 1 
    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1 1.22 1.37 1.24 1.40 1.47 1.45 1.56 1.51 1.36 1.47 1.44 1.39 
2 1.39 1.28 1.26 1.43 1.47 1.54 1.41 1.33 1.38 1.30 1.28 1.35 
3 1.20 1.21 1.18 1.36 1.30 1.34 1.25 1.28 1.23 1.21 1.13 1.25 
4 1.04 1.21 1.14 1.14 1.13 1.27 1.37 1.10 1.18 1.00 1.22 1.25 
5 1.08 1.21 1.20 1.15 1.16 1.25 1.26 1.34 1.30 1.09 1.17 1.24 
6 1.25 1.25 1.19 1.25 1.05 1.27 1.27 1.11 1.19 1.15 1.25 1.29 
7 1.11 1.28 1.25 1.26 1.19 1.28 1.38 1.42 1.38 1.20 1.09 1.13 
8 1.11 1.30 1.30 1.10 1.24 1.21 1.36 1.21 1.11 1.06 1.26 1.29 
9 1.05 1.22 1.29 1.34 1.18 1.35 1.36 1.25 1.19 1.11 1.22 1.37 
10 1.20 1.28 1.16 1.26 1.26 1.40 1.27 1.26 1.27 1.25 1.27 1.31 
11 1.13 1.38 1.23 1.45 1.33 1.58 1.52 1.41 1.40 1.21 1.13 1.26 
12 1.13 1.24 1.33 1.44 1.58 1.45 1.54 1.50 1.43 1.29 1.27 1.36 
13 1.29 1.22 1.37 1.46 1.47 1.51 1.52 1.34 1.31 1.47 1.29 1.38 
14 1.18 1.38 1.42 1.53 1.47 1.65 1.51 1.43 1.55 1.37 1.38 1.40 
15 1.35 1.34 1.28 1.31 1.32 1.38 1.45 1.35 1.43 1.26 1.26 1.22 
16 1.11 1.17 1.20 1.19 1.22 1.37 1.46 1.29 1.38 1.23 1.09 1.15 
17 1.03 0.97 1.04 1.07 1.05 1.18 0.99 1.14 0.93 0.98 0.95 1.02 
18 0.93 1.03 0.90 0.95 0.89 1.10 1.01 0.95 1.07 0.89 0.90 0.97 
19 0.79 0.79 0.86 0.89 0.78 0.78 0.97 0.70 0.80 0.78 0.81 0.81 

所以在有正確的行名,但反而顯示指示。爲什麼會這樣?這是否意味着我將原始數據框轉換爲ts有什麼問題?

+0

請通過dput保存你的對象,並在郵件中寫的,讓任何人都可以複製它。 – user31264

+0

嘗試'print.default(deaths.ts)' - 據我所知,'ts'對象在轉換過程中丟棄rownames。我不知道你是如何把它們放在第一位的。正如@ user31264所指出的那樣,用於生成對象的代碼的一些描述會很好。 – thelatemail

回答

0

您有一個多變量時間序列,每列爲一個月。大概你想要一個單變量時間序列,所以你首先需要將你的數據幀轉換成一個數值向量。如果deaths是你原來的data.frame,然後將下面的代碼應該將它轉換:

deaths.ts <- ts(c(t(deaths)), frequency=12)