Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R时间序列数据集-滞后日期和时间-不规则数据周期_R - Fatal编程技术网

R时间序列数据集-滞后日期和时间-不规则数据周期

R时间序列数据集-滞后日期和时间-不规则数据周期,r,R,我正在努力处理一个包含日期和时间的数据集。我想建立新的专栏,如前一周相同时段和前一天相同时段 我在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(

我正在努力处理一个包含日期时间的数据集。我想建立新的专栏,如前一周相同时段前一天相同时段

我在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))
请注意,第一行有一个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))
库(dplyr)
df$日期%
安排(时间、日期)%>%
分组单位(时间)%>%
突变(lag_1day=lag(值,n=1,默认值=NA))%>%
安排(描述(日期、时间))

嗨,汤姆!谢谢你的快速回答!效果很好。所以,我不必按日期和时间分组?滞后函数适用于特定的分组。如果同时按日期和时间分组,则不会将每一行与其他任何行分组,因为日期和时间是唯一的。如果只按时间分组,则会将所有日期分组在一起,此时滞后函数将正常工作。
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))