2  数据对象

数据类型有整型(32 位或 64 位)、逻辑型、字符型、日期型、数值型(单、双精度浮点型)等。数据结构有向量、矩阵、数组、列表和数据框等。

2.1 数据类型

2.1.1 整型

2.1.2 逻辑型

2.1.3 字符型

2.1.4 日期型

2.1.5 数值型

2.2 数据结构

2.2.1 向量

2.2.2 矩阵

2.2.3 数组

2.2.4 列表

2.2.5 因子

2.2.6 数据框

2.2.7 ts

ts 类型用于表示时间序列数据,是继承自数组类型的。给定数据、采样初始时间、采样频率的情况下,利用内置的函数 ts() 构造一个 ts 类型的分钟级的时间序列对象。

x <- ts(
  data = rnorm(100), 
  start = c(2017, 1), 
  frequency = 365.25 * 24 * 60, 
  class = "ts", names = "Time_Series"
)

ts() 函数的 startfrequency 参数很关键,前者指定了时间单位是天,后者指定每个时间单位下的数据点的数量。其中 365.25 是因为每隔 4 年有 366 天,平均下来,每年算 365.25 天。每隔 1 / (24 * 60) 天(即 1 分钟)采样一个点。如果初始时间不是从一年的第1分钟开始,而是从此时此刻 2023-01-31 10:43:30 CST 开始,则可以换算成今年的第 30 * 24 * 60 + 9 * 60 + 43 = 43783 分钟,则 Start = c(2023, 43783)

以数据集 AirPassengers 为例,它是一个 ts 类型的时间序列数据对象。时间序列对象有很多方法,如函数 class()mode()str() 分别可以查看其数据类型、存储类型和数据结构。

# 数据类型
class(AirPassengers)
[1] "ts"
# 存储类型
mode(AirPassengers)
[1] "numeric"
# 数据结构
str(AirPassengers)
 Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 ...

函数 start()end() 查看开始和结束的时间点。

c(start(AirPassengers), end(AirPassengers))
[1] 1949    1 1960   12

函数 time() 可以查看在以上时间区间的划分。

time(AirPassengers)
          Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
1949 1949.000 1949.083 1949.167 1949.250 1949.333 1949.417 1949.500 1949.583
1950 1950.000 1950.083 1950.167 1950.250 1950.333 1950.417 1950.500 1950.583
1951 1951.000 1951.083 1951.167 1951.250 1951.333 1951.417 1951.500 1951.583
1952 1952.000 1952.083 1952.167 1952.250 1952.333 1952.417 1952.500 1952.583
1953 1953.000 1953.083 1953.167 1953.250 1953.333 1953.417 1953.500 1953.583
1954 1954.000 1954.083 1954.167 1954.250 1954.333 1954.417 1954.500 1954.583
1955 1955.000 1955.083 1955.167 1955.250 1955.333 1955.417 1955.500 1955.583
1956 1956.000 1956.083 1956.167 1956.250 1956.333 1956.417 1956.500 1956.583
1957 1957.000 1957.083 1957.167 1957.250 1957.333 1957.417 1957.500 1957.583
1958 1958.000 1958.083 1958.167 1958.250 1958.333 1958.417 1958.500 1958.583
1959 1959.000 1959.083 1959.167 1959.250 1959.333 1959.417 1959.500 1959.583
1960 1960.000 1960.083 1960.167 1960.250 1960.333 1960.417 1960.500 1960.583
          Sep      Oct      Nov      Dec
1949 1949.667 1949.750 1949.833 1949.917
1950 1950.667 1950.750 1950.833 1950.917
1951 1951.667 1951.750 1951.833 1951.917
1952 1952.667 1952.750 1952.833 1952.917
1953 1953.667 1953.750 1953.833 1953.917
1954 1954.667 1954.750 1954.833 1954.917
1955 1955.667 1955.750 1955.833 1955.917
1956 1956.667 1956.750 1956.833 1956.917
1957 1957.667 1957.750 1957.833 1957.917
1958 1958.667 1958.750 1958.833 1958.917
1959 1959.667 1959.750 1959.833 1959.917
1960 1960.667 1960.750 1960.833 1960.917

函数 tsp() 可以查看其期初、期末和周期。

tsp(AirPassengers)
[1] 1949.000 1960.917   12.000