R - 从开始日期开始查找 x 天,同时保持日期之间
我试图找到每个类别的第一个日期,然后减去 5 天,并且我想保留中间的天数!这就是我挣扎的地方。我尝试了seq()但它给了我一个错误,所以我不确定这是否是正确的方法。
我可以在每个类别的开始日期前 5 天获得, 但我不知道如何在开始日期前获得 0、1、2、3、4 和 5 天!
我得到的错误是这样的(对于代码的注释部分): seq.default(., as.Date(first_day), by = "day", length.out = 5) 中的错误:'from' 必须是长度为 1
任何帮助将不胜感激!
library ("lubridate")
library("dplyr")
library("tidyr")
data <- data.frame(date = c("2020-06-08",
"2020-06-09",
"2020-06-10",
"2020-06-11",
"2020-06-12",
"2021-07-13",
"2021-07-14",
"2021-07-15",
"2021-08-16",
"2021-08-17",
"2021-08-18",
"2021-09-19",
"2021-09-20"),
value = c(2,1,7,1,0,1,2,3,4,7,6,5,10),
category = c(1,1,1,1,1,2,2,2,3,3,3,4,4))
data$date <- as.Date(data$date)
View(data)
test_dates <- data %>%
group_by(category) %>%
arrange(date) %>%
slice(1L) %>% #takes first date
mutate(first_day = as.Date(date) - 5)#%>%
#seq(as.Date(first_day),by="day",length.out=5)
#error for seq(): Error in seq.default(., as.Date(first_day), by = "day", length.out = 5) : 'from' must be of length 1
head(test_dates)
我正在寻找的答案应该包括这些日期,但采用列格式!如果值不存在,我也尝试在值类别中输入 NA 。我想保留所有可能的列,因为我需要使用它的数据框大约有 20 列
日期:“2020-06-03”、“2020-06-04”、“2020-06-05”、“2020-06-06”、“2020-06-07”、“2020-06-08”、 “2020-07-08”、“2020-07-09”、“2020-07-10”、“2020-07-11”、“2020-07-12”、“2021-07-13”、“2020” -08-11”、“2020-08-12”、“2020-08-13”、“2020-08-14”、“2020-08-15”、“2021-08-16”、“2020-09” -14”、“2020-09-15”、“2020-09-16”、“2020-09-17”、“2020-09-18”、“2021-09-19”、