要按组创建一个新的POSIXct序列,可以使用dplyr包中的group_by和mutate函数来实现。以下是一个示例代码:
library(dplyr)
# 创建一个包含日期和组标识的数据框
df <- data.frame(
datetime = as.POSIXct(c("2021-01-01 12:00:00", "2021-01-01 13:00:00", "2021-01-01 14:00:00",
"2021-01-02 12:00:00", "2021-01-02 13:00:00", "2021-01-02 14:00:00")),
group = c("A", "A", "A", "B", "B", "B")
)
# 按组创建新的POSIXct序列
df <- df %>%
group_by(group) %>%
mutate(new_datetime = seq(min(datetime), max(datetime), by = "hour"))
# 查看结果
print(df)
在这个示例中,我们首先创建了一个包含日期和组标识的数据框。然后,我们使用group_by函数按组对数据进行分组。接下来,我们使用mutate函数来创建一个新的列new_datetime,该列包含按小时递增的POSIXct序列。我们使用seq函数来生成新的序列,其中起始值为每个组中的最小日期时间值,结束值为每个组中的最大日期时间值,步长为1小时。最后,我们打印出结果。
输出结果如下:
# A tibble: 6 x 3
# Groups: group [2]
datetime group new_datetime
1 2021-01-01 12:00:00 A 2021-01-01 12:00:00
2 2021-01-01 13:00:00 A 2021-01-01 13:00:00
3 2021-01-01 14:00:00 A 2021-01-01 14:00:00
4 2021-01-02 12:00:00 B 2021-01-02 12:00:00
5 2021-01-02 13:00:00 B 2021-01-02 13:00:00
6 2021-01-02 14:00:00 B 2021-01-02 14:00:00
在结果中,新的列new_datetime按组正确创建了递增的POSIXct序列。
下一篇:按组创建组合