1、时间的设置
在设定日期后,有时需要更精确的时间,即精确到小时、分钟、秒。
使用函数Sys.time()可以返回目前的系统时间。
Sys.time()
[1] "2025-01-08 18:56:32 CST"
"CST"表示所在位置的时区代码,也称为中国标准时间(China Standard Time, CST),指的是中国东八区的时间,比UTC快8小时。"UTC"指的是协调时间(Universal Time Coordinated)。
如果"UTC"为2024-03-14 07:00:00,则中国标准时间为2024-03-14 15:00:00。
函数as.POSIXct()
函数as.POSIXct()设置时间向量对象,这个时间默认从1970年1月1日开始计数,并以秒为单位。
x = '2024-3-15 12:00:00'
fmt = '%Y-%m-%d %H:%M:%S'
as.POSIXct(x, format = fmt)
[1] "2024-03-15 12:00:00 CST"
在日期的基础上,加上时间的格式,以下是一些时间的格式。
%H:小时数(00-23); %M:分钟数(00-59); %S:秒数(00-59);
%I:小时数(00-12); %p:AM/FM。
函数as.POSIXct(x, tz = '', origin = )
x:操作的对象; tz:时区(time zone); origin:指定时间的起点。
as.POSIXct(3600, tz = 'UTC', origin = '2025-01-08 19:00:00' )
[1] "2025-01-08 20:00:00 UTC" #即'2025-01-08 19:00:00',经过3600秒,也就是1小时的时间
使用函数seq()处理时间。
seq(Sys.time(), by = '1 months', length.out = 6)
[1] "2025-01-08 19:45:01 CST" "2025-02-08 19:45:01 CST"
[3] "2025-03-08 19:45:01 CST" "2025-04-08 19:45:01 CST"
[5] "2025-05-08 19:45:01 CST" "2025-06-08 19:45:01 CST"
两个时间也可以比较大小。
x = '2024-3-15 12:00:00'
fmt = '%Y-%m-%d %H:%M:%S'
as.POSIXct(x, format = fmt) > Sys.time()
[1] FALSE
2、时间序列
函数ts(x, start, end, frequency) 英文time series:时间序列。
x:操作的对象,可以是向量、矩阵。
start:时间起点,可以是单一数值,也可以是含有两个数字的向量。
end:时间终点,它的数据格式应与start相同,通常可以省略。
frequency:相较于start时间起点的频率。
例如,建立2011-2017年的数据,年份数。
weight = c(71, 72, 71, 70, 71, 70, 71) #数据向量
ts(weight, start = 2011, frequency = 1) #建立时间序列
Time Series:
Start = 2011
End = 2017
Frequency = 1
[1] 71 72 71 70 71 70 71
建立2024年1月到12月销售额的时间序列,月份数。
sales = c(10, 14, 13, 25, 14, 12,
15, 18, 18, 14, 15, 18 )
#参数'frequency = 12',得知这是月份,参数'start = c(2024, 1)'得知从第1月开始统计
ts(sales, start = c(2024, 1), frequency = 12)
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2024 10 14 13 25 14 12 15 18 18 14 15 18
建立2024年每个季度的收入额,季度。
income = c(123, 124, 146, 155)
#参数'frequency = 4',得知这是季度,参数'start = c(2024, 1)'得知从第1季度开始统计
ts(income, start = c(2024, 1), frequency = 4)
Qtr1 Qtr2 Qtr3 Qtr4
2024 123 124 146 155
从2024年2月8日起,每天记录消费,持续10天,天数。
cost = c(12, 10, 12, 10, 9,
12, 10, 10, 9, 10)
#参数'frequency = 365',得知这是天数,参数'start = c(2024, 8)'得知从第39天(2月8日)开始统计
ts(cost, start = c(2024, 39), frequency = 365)
Time Series:
Start = c(2024, 39)
End = c(2024, 48)
Frequency = 365
[1] 12 10 12 10 9 12 10 10 9 10