r - R时间序列数据集 - 滞后日期和时间 - 不规则的数据周期
问题描述
我正在努力处理包含date和time的数据集。我想构建新的列,例如same_period_previous_week和same_period_previous_day。
我已经在 Stackoverflow 中阅读了几个答案,但无法修复它。
这是重新创建我的数据集的代码:
structure(list(date = structure(c(3L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("8/19/2018", "8/25/2018", "8/26/2018" ), class = "factor"), time = c(9L, 10L, 11L, 12L, 10L, 11L, 12L, 10L, 11L, 12L), value = c(2L, 15L, 25L, 35L, 10L, 20L, 30L, 7L, 14L, 21L)), .Names = c("date", "time", "value"), class = "data.frame", row.names = c(NA, -10L))
看起来像这样:
date time value
8/26/2018 9 2
8/26/2018 10 15
8/26/2018 11 25
8/26/2018 12 35
8/25/2018 10 10
8/25/2018 11 20
8/25/2018 12 30
8/19/2018 10 7
8/19/2018 11 14
8/19/2018 12 21
我尝试使用dplyr,首先对数据集进行排序,然后对其进行分组并创建一个滞后列。这是我的代码:
df <- df %>% arrange(date, time)
df_tmp <- df %>% group_by(date, time) %>% mutate(lag_1day = lag(value, n = 1, default = NA))
新列 (lag_1day) 以几个 NA 结尾。
我希望得到以下结果:
date time value lag_1day
8/26/2018 9 2 NA
8/26/2018 10 15 10
8/26/2018 11 25 20
8/26/2018 12 35 30
8/25/2018 10 10 7
8/25/2018 11 20 14
8/25/2018 12 30 21
8/19/2018 10 7 NA
8/19/2018 11 14 NA
8/19/2018 12 21 NA
请注意,第一行有一个 NA,因为前一天上午 9 点没有对应的值。
我在第一步中按升序还是降序排列它们有关系吗?
感谢期待!
解决方案
像这样试试。我想你几乎在那里。
library(dplyr)
df$date <- as.Date(df$date, '%m/%d/%Y')
df %>%
arrange(time, date) %>%
group_by(time) %>%
mutate(lag_1day = lag(value, n = 1, default = NA)) %>%
arrange(desc(date, time))
推荐阅读
- audio - 如何在颤动中获取音频文件的持续时间?
- sql - 我怎样才能使我的查询优化以减少执行时间
- r - 如何使用多个变量或维度进行扩展
- javascript - 使用 server.js 和 proxy.config.json 使用 Protractor 模拟服务
- laravel - 雄辩的查询哪里和条件或哪里和不同的条件
- unity3d - 轮廓着色器统一类似于 Gizmo 编辑器
- php - ReflectionException:类 PermissionsTableSeeder 不存在
- unity3d - 私有接口下的属性总是返回零
- c# - Asp.Net Core 从 appsettings.json 获取 json 数组
- java - reduce() 方法如何与 Java 8 中的并行流一起工作?