在 POSIXlt 中提取周数
Extract week number in POSIXlt
我正在尝试在我的数据中创建一个 "Week" 列,但无法弄清楚如何将第一周的第一天(从 2018 年 12 月 30 日星期日开始)正确分配给 2019 年的第一周.
2018 年 12 月 30 日是星期日,我想将其分配到 2019 年第 1 周的第一天;在网上搜索了太久之后,我想我应该在这里问一下。
如果您需要更清楚的信息:
DATE DAY WEEK
12/30/2018 Sunday 01 (first day of week 1)
12/31/2018 Monday 01
1/01/2019 Tuesday 01
. . .
. . .
. . .
1/6/2019 Sunday 02 (the first day of week 2)
. . .
. . .
. . .
. . .
. . .
. . .
6/26/2019 Sunday 22 (first day of week 22)
. . .
. . .
. . .
转换为日期,然后使用 format
并调整以获得预期输出
library(dplyr)
df %>%
mutate(DATE = as.Date(DATE, "%m/%d/%Y"),
wk = (as.integer(format(DATE, "%U")) + 1) %% 52)
# DATE DAY wk
#1 2018-12-30 Sunday 1
#2 2018-12-31 Monday 1
#3 2019-01-01 Tuesday 1
#4 2019-01-06 Sunday 2
#5 2019-06-26 Sunday 26
数据
df <- structure(list(DATE = structure(c(3L, 4L, 1L, 2L, 5L), .Label = c("1/01/2019",
"1/6/2019", "12/30/2018", "12/31/2018", "6/26/2019"), class = "factor"),
DAY = structure(c(2L, 1L, 3L, 2L, 2L), .Label = c("Monday",
"Sunday", "Tuesday"), class = "factor")), class = "data.frame",
row.names = c(NA, -5L))
lubridate
软件包具有这些功能。
#Using Ronak's Data
library(lubridate)
epiweek(mdy(df$DATE))
#[1] 1 1 1 2 26
您可以通过输入 ?lubridate::week
获取更多信息
我正在尝试在我的数据中创建一个 "Week" 列,但无法弄清楚如何将第一周的第一天(从 2018 年 12 月 30 日星期日开始)正确分配给 2019 年的第一周.
2018 年 12 月 30 日是星期日,我想将其分配到 2019 年第 1 周的第一天;在网上搜索了太久之后,我想我应该在这里问一下。
如果您需要更清楚的信息:
DATE DAY WEEK
12/30/2018 Sunday 01 (first day of week 1)
12/31/2018 Monday 01
1/01/2019 Tuesday 01
. . .
. . .
. . .
1/6/2019 Sunday 02 (the first day of week 2)
. . .
. . .
. . .
. . .
. . .
. . .
6/26/2019 Sunday 22 (first day of week 22)
. . .
. . .
. . .
转换为日期,然后使用 format
并调整以获得预期输出
library(dplyr)
df %>%
mutate(DATE = as.Date(DATE, "%m/%d/%Y"),
wk = (as.integer(format(DATE, "%U")) + 1) %% 52)
# DATE DAY wk
#1 2018-12-30 Sunday 1
#2 2018-12-31 Monday 1
#3 2019-01-01 Tuesday 1
#4 2019-01-06 Sunday 2
#5 2019-06-26 Sunday 26
数据
df <- structure(list(DATE = structure(c(3L, 4L, 1L, 2L, 5L), .Label = c("1/01/2019",
"1/6/2019", "12/30/2018", "12/31/2018", "6/26/2019"), class = "factor"),
DAY = structure(c(2L, 1L, 3L, 2L, 2L), .Label = c("Monday",
"Sunday", "Tuesday"), class = "factor")), class = "data.frame",
row.names = c(NA, -5L))
lubridate
软件包具有这些功能。
#Using Ronak's Data
library(lubridate)
epiweek(mdy(df$DATE))
#[1] 1 1 1 2 26
您可以通过输入 ?lubridate::week