讓我們有一個日期序列,
df = data.frame(date = seq(as.Date('2022-01-01'),as.Date('2022-01-31'),by = 1))
我想從星期二開始一周,然后削減日期以創建新列week,給出周數。所需的輸出是,
date week
1 2022-01-01 1
2 2022-01-02 1
3 2022-01-03 1
4 2022-01-04 2
5 2022-01-05 2
同樣,如果我想從星期三開始這一周,預期的輸出是,
date week
1 2022-01-01 1
2 2022-01-02 1
3 2022-01-03 1
4 2022-01-04 1
5 2022-01-05 2
6 2022-01-06 2
我怎樣才能完成這項作業?
如果一周從星期一開始,我會使用,
df%>% mutate(week = cut.Date(df$date, breaks = "1 week", labels = FALSE))
date week
1 2022-01-01 1
2 2022-01-02 1
3 2022-01-03 2
4 2022-01-04 2
5 2022-01-05 2
感謝您的任何幫助...
uj5u.com熱心網友回復:
我們可以指定week_startin floor_date( week_start- 1will be Mondayand 7will be Sunday)
f1 <- function(dates, wk_start = 1) {
new <- lubridate::floor_date(dates, 'week', week_start = wk_start)
match(new, unique(new))
}
-檢查
> library(dplyr)
> df %>%
mutate(week = f1(date, wk_start = 1)) %>%
head
date week
1 2022-01-01 1
2 2022-01-02 1
3 2022-01-03 2
4 2022-01-04 2
5 2022-01-05 2
6 2022-01-06 2
> df %>%
mutate(week = f1(date, wk_start = 2)) %>%
head
date week
1 2022-01-01 1
2 2022-01-02 1
3 2022-01-03 1
4 2022-01-04 2
5 2022-01-05 2
6 2022-01-06 2
> df %>%
mutate(week = f1(date, wk_start = 3)) %>%
head
date week
1 2022-01-01 1
2 2022-01-02 1
3 2022-01-03 1
4 2022-01-04 1
5 2022-01-05 2
6 2022-01-06 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/412562.html
標籤:
