2016-11-14 70 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)