R 添加与日期列对齐的周计数序列,该列包含不常见的日期

R 添加与日期列对齐的周计数序列,该列包含不常见的日期,r,lubridate,R,Lubridate,我正在构建一个数据集,希望能够向数据集添加一周计数,从第一个日期开始,到最后一个日期结束。我用它来总结一个更大的数据集,我希望最后一周总结一下 使用此示例: library(dplyr) df <- tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"), Week = nrow/7) # A tibble: 93 x 2 Date Week <date>

我正在构建一个数据集,希望能够向数据集添加一周计数,从第一个日期开始,到最后一个日期结束。我用它来总结一个更大的数据集,我希望最后一周总结一下

使用此示例:

library(dplyr)

df <- tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"), 
Week = nrow/7)
# A tibble: 93 x 2
   Date        Week
   <date>     <dbl>
 1 1944-06-01 0.143
 2 1944-06-02 0.286
 3 1944-06-03 0.429
 4 1944-06-04 0.571
 5 1944-06-05 0.714
 6 1944-06-06 0.857
 7 1944-06-07 1    
 8 1944-06-08 1.14 
 9 1944-06-09 1.29 
10 1944-06-10 1.43 
# … with 83 more rows
库(dplyr)

df您可以用第一个
日期减去所有
日期
值,并在“周”内使用
difftime
计算差值,
floor
所有值并加1以从1开始计数器

df$week <- floor(as.numeric(difftime(df$Date, df$Date[1], units = "weeks"))) + 1


df
# A tibble: 93 x 2
#   Date        week
#   <date>     <dbl>
# 1 1944-06-01     1
# 2 1944-06-02     1
# 3 1944-06-03     1
# 4 1944-06-04     1
# 5 1944-06-05     1
# 6 1944-06-06     1
# 7 1944-06-07     1
# 8 1944-06-08     2
# 9 1944-06-09     2
#10 1944-06-10     2
# … with 83 more rows
数据

df <- tibble::tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"))

df您可以用第一个
Date
减去所有
Date
值,并使用
difftime
在“周”内计算差值,
floor
所有值,然后加1以从1开始计数器

df$week <- floor(as.numeric(difftime(df$Date, df$Date[1], units = "weeks"))) + 1


df
# A tibble: 93 x 2
#   Date        week
#   <date>     <dbl>
# 1 1944-06-01     1
# 2 1944-06-02     1
# 3 1944-06-03     1
# 4 1944-06-04     1
# 5 1944-06-05     1
# 6 1944-06-06     1
# 7 1944-06-07     1
# 8 1944-06-08     2
# 9 1944-06-09     2
#10 1944-06-10     2
# … with 83 more rows
数据

df <- tibble::tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"))

df类似于Ronak的解决方案,但使用了
lubridate

library(lubridate)

(df <- tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"),
              week = interval(min(Date), Date) %>%
                as.duration() %>%
                as.numeric("weeks") %>%
                floor() + 1))
库(lubridate)
(df%)
as.duration()%>%
作为数字(“周”)%%>%
地板(+1))

类似于Ronak的解决方案,但使用了lubridate

library(lubridate)

(df <- tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"),
              week = interval(min(Date), Date) %>%
                as.duration() %>%
                as.numeric("weeks") %>%
                floor() + 1))
库(lubridate)
(df%)
as.duration()%>%
作为数字(“周”)%%>%
地板(+1))

谢谢@Paul,这更适合我正在寻找的,在管道工作流中更好谢谢@Paul,这更适合我正在寻找的,在管道工作流中更好