亲爱的,我有一个直接来自传感器的数据帧。数据在单列中提供日期和时间。我希望 R 能够识别这些数据,然后在数据框中创建一个相邻的列,该列给出一个与时间和日期列中的新日期相对应的数字。例如,data$time.date 中的 25/02/2011 13:34 将在新列 data$day 中给出 1,而 data$time.date 中的 26/02/2011 13:34 将得到 2,依此类推。 ..
有谁知道如何解决这个问题?在此先感谢您的帮助。
您可以使用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)