1  数据对象

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

1.1 数据类型

1.1.1 整型

c(1L, 2L)
[1] 1 2

1.1.2 逻辑型

c(TRUE, FALSE)
[1]  TRUE FALSE

1.1.3 字符型

c("A", "B")
[1] "A" "B"

1.1.4 日期型

c(as.Date("2022-01-01"), as.Date("2022-01-02"))
[1] "2022-01-01" "2022-01-02"

1.1.5 数值型

c(1,1.2)
[1] 1.0 1.2

1.2 数据结构

1.2.1 向量

所有元素都是同一类型

1.2.2 矩阵

所有元素都是同一类型

1.2.3 数组

所有元素都是同一类型

1.2.4 列表

元素可以属于不同类型

1.2.5 因子

1.2.6 数据框

同列的元素类型必须一致,不同列的元素类型可以不同。

1.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)

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

# 数据类型
class(x)
[1] "ts"
# 存储类型
mode(x)
[1] "numeric"
# 数据结构
str(x)
 Time-Series [1:100] from 2017 to 2017: -2.3333 0.4997 -0.0427 0.4452 1.6199 ...

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

c(start(x), end(x))
[1] 2017    1 2017  100

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

time(x)
Time Series:
Start = c(2017, 1) 
End = c(2017, 100) 
Frequency = 525960 
  [1] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017
 [16] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017
 [31] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017
 [46] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017
 [61] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017
 [76] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017
 [91] 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017

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

tsp(x)
[1]   2017   2017 525960