在 R 中处理日期和时间数据

Rod*_*ger 2 r

亲爱的,我有一个直接来自传感器的数据帧。数据在单列中提供日期和时间。我希望 R 能够识别这些数据,然后在数据框中创建一个相邻的列,该列给出一个与时间和日期列中的新日期相对应的数字。例如,data$time.date 中的 25/02/2011 13:34 将在新列 data$day 中给出 1,而 data$time.date 中的 26/02/2011 13:34 将得到 2,依此类推。 ..

有谁知道如何解决这个问题?在此先感谢您的帮助。

Rei*_*son 5

您可以使用cut() 该调用产生的因子并将其转换为数字。这是一个带有虚拟数据的示例:

> sdate <- as.POSIXlt("25/02/2011 13:34", format = "%d/%m/%Y %H:%M")
> edate <- as.POSIXlt("02/03/2011 13:34", format = "%d/%m/%Y %H:%M")
> df <- data.frame(dt = seq(from = sdate, to = edate, by = "hours"))
> head(df)
                   dt
1 2011-02-25 13:34:00
2 2011-02-25 14:34:00
3 2011-02-25 15:34:00
4 2011-02-25 16:34:00
5 2011-02-25 17:34:00
6 2011-02-25 18:34:00
Run Code Online (Sandbox Code Playgroud)

我们使用 将日期时间列切成天数cut()这会导致将日期作为标签的因素。我们将此因子转换为数字以得到1, 2, ...

> df <- within(df, day <- cut(dt, "day", labels = FALSE))
> head(df, 13)
                    dt day
1  2011-02-25 13:34:00   1
2  2011-02-25 14:34:00   1
3  2011-02-25 15:34:00   1
4  2011-02-25 16:34:00   1
5  2011-02-25 17:34:00   1
6  2011-02-25 18:34:00   1
7  2011-02-25 19:34:00   1
8  2011-02-25 20:34:00   1
9  2011-02-25 21:34:00   1
10 2011-02-25 22:34:00   1
11 2011-02-25 23:34:00   1
12 2011-02-26 00:34:00   2
13 2011-02-26 01:34:00   2
Run Code Online (Sandbox Code Playgroud)