R 时间序列数据的子集划分

R 时间序列数据的子集划分,r,time-series,subset,R,Time Series,Subset,我使用的是内置数据集。数据是这样的 数据是这样开始的 data(usmacro) 数据是一个时间序列。数据来自: inf une tbi 1953 Q1 1.7904638 2.700000 1.9800000 1953 Q2 1.5219396 2.566667 2.1533333 1953 Q3 1.0957584 2.733333 1.9566667 1953 Q4 0.9877907 3.700000 1.47

我使用的是内置数据集。数据是这样的

数据是这样开始的

data(usmacro)
数据是一个时间序列。数据来自:

             inf       une        tbi
1953 Q1  1.7904638  2.700000  1.9800000
1953 Q2  1.5219396  2.566667  2.1533333
1953 Q3  1.0957584  2.733333  1.9566667
1953 Q4  0.9877907  3.700000  1.4733333
1954 Q1  1.3478690  5.266667  1.0600000
1954 Q2  1.2936791  5.800000  0.7900000
1954 Q3  0.9297588  5.966667  0.8833333
1954 Q4  0.7216526  5.333333  1.0200000
1955 Q1  0.6671824  4.733333  1.2233333
1955 Q2  1.0739045  4.400000  1.4833333
1955 Q3  1.7834868  4.100000  1.8566667
1955 Q4  2.3351315  4.233333  2.3366667
1956 Q1  2.9235953  4.033333  2.3266667
1956 Q2  3.3019508  4.200000  2.5666667
这些数据是一个时间序列。有谁能帮我把时间序列划分成子集吗?更具体地说,我想使用1953年第二季度的数据,我可以使用什么代码?

试试:

# Load data
ts <- usmacro

# See naming convention of years & quarters
timeSeries::getTime(ts)

# Filter data for '1953 Q2' or 1953.25
ts_sub <- ts[timeSeries::getTime(ts) >= 1953.25,]
#加载数据
ts@Shane

您可以使用dplyr包进行筛选,但首先,为了更易于操作数据集,让我们创建一个具有行名的列:

# Loading dataset
dt <- data(usmacro)

# Creating a column called 'Year' and assigning the row's names.
dt['Year'] <- rownames(dt)
之后,您只需使用dplyr过滤数据:

# Installing and loading **dplyr** package
install.packages(dplyr)
library('dplyr')

dt %>% filter(year==1953 & quarter=='Q2')

假设这是bvarsv包中的usmacro,它是一个mts/ts对象,因此我们可以使用
窗口
,如下所示。有关更多信息,请参见
?窗口
。除数据外,下面的代码不使用包

window(usmacro, start = c(1953, 2))
给予:

               inf       une        tbi
1953 Q2  1.5219396  2.566667  2.1533333
1953 Q3  1.0957584  2.733333  1.9566667
1953 Q4  0.9877907  3.700000  1.4733333
1954 Q1  1.3478690  5.266667  1.0600000
...snip...

Shane,年份列有名字还是行?它没有名字,这就是我遇到问题的原因。该数据称为数据(usmacro),请提供包括库语句在内的完整代码。您好@C Jeruzal,谢谢。不幸的是,最后一个命令运行了一个错误。df[timeSeries::getTime(ts)==1953.25,]中的错误:类型为“closure”的对象不是subsettablecorrected代码。再试一次。对不起!非常感谢!最后一个问题——我只是希望获得1953.25年以后的所有数据,我在您的ts_sub中尝试了冒号代码,但没有效果,对此有什么建议吗?@C JeruzalI再次更新了代码,并添加了另一种方法,使用
tsibble
lubridate
包尝试子集。。。我认为它更易于使用,所有数据都已准备好用于tiime系列绘图。#创建一个名为“Year”的列并指定行的名称。dt['Year']Shane,试着这样做:dt['Year']它返回相同的错误@玩家乌拉蒂娅,试着上传你的数据集如下:dt
window(usmacro, start = c(1953, 2))
               inf       une        tbi
1953 Q2  1.5219396  2.566667  2.1533333
1953 Q3  1.0957584  2.733333  1.9566667
1953 Q4  0.9877907  3.700000  1.4733333
1954 Q1  1.3478690  5.266667  1.0600000
...snip...