返回

R - 从开始日期开始查找 x 天,同时保持日期之间

发布时间:2022-07-16 23:47:21 265
# 数据

我试图找到每个类别的第一个日期,然后减去 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”、

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像