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,这更适合我正在寻找的,在管道工作流中更好