从数据帧转换为时间序列(ts)后难以理解strptime的结果格式

问题描述 投票:0回答:1

当我在数据框中使用strptime函数时,日期格式看起来正确。但是,当我随后将其转换为ts(时间序列)时,可以使用诸如预测之类的功能时,数据列看起来像胡言乱语,通常很难看清它是否正确。考虑下面的代码。...

qtr <- c("03/01/2000","06/01/2000","09/01/2000","12/01/2000","03/01/2001","06/01/2001","09/01/2001","12/01/2001")
qtr <- strptime(as.character(qtr), format = "%m/%d/%Y",tz="EST")
dem <- c(1342,1382,1296, 1330, 1360, 1441,1343,1426)

# create data frame
data <- data.frame(qtr,dem)
data

我输入数据时的输出如下:

#          qtr  dem
# 1 2000-03-01 1342
# 2 2000-06-01 1382
# 3 2000-09-01 1296
# 4 2000-12-01 1330

如预期。但是,当我将其转换为如下所示的时间序列时,会得到一个额外的列。

ts=ts(data, start=c(2000,1), end= c(2001,4),frequency=4)
ts

输出:

#          qtr        dem
# 2000 Q1  951886800 1342
# 2000 Q2  959835600 1382
# 2000 Q3  967784400 1296
# 2000 Q4  975646800 1330

[此外,如果我执行视图(即View(ts)),则只能看到第二列和第三列,而且很难弄清楚日期是什么意思。中间列的格式是什么? 975646800中的数字代表什么?

r dataframe strptime
1个回答
0
投票

如果在ts对象中指定data$dem,则结果应符合您的期望。

qtr <- c("03/01/2000","06/01/2000","09/01/2000","12/01/2000","03/01/2001","06/01/2001","09/01/2001","12/01/2001")
qtr <- strptime(as.character(qtr), format = "%m/%d/%Y",tz="EST")
dem <- c(1342,1382,1296, 1330, 1360, 1441,1343,1426)

# create data frame
data <- data.frame(qtr,dem)


myts <- ts(data$dem, start=c(2000, 3), end=c(2001, 12), frequency=4)

myts
#>      Qtr1 Qtr2 Qtr3 Qtr4
#> 2000           1342 1382
#> 2001 1296 1330 1360 1441
#> 2002 1343 1426 1342 1382
#> 2003 1296 1330 1360 1441

reprex package(v0.3.0)在2020-01-29创建

© www.soinside.com 2019 - 2024. All rights reserved.