【问题标题】:r: create custom "week" functionr:创建自定义“星期”功能
【发布时间】:2018-11-20 22:36:01
【问题描述】:
我正在编写一个函数,它将获取我的 df$date 字段(每天 POSIXct 日期(按天)并创建一个名为 df$wbm 的新变量(wbm = 从星期一开始的星期)。我知道数学有效,因为我已经在 Excel 中完成了此操作,但语法不起作用,请参见下文:
df$wbm<- if (weekdays(df$date) == "Sunday") {
df$date - days(6)
} else { df$date + (days(2) - df$date)
}
【问题讨论】:
标签:
r
tidyverse
lubridate
【解决方案1】:
%w 可能是您正在寻找的 format 参数:星期天是 0 的星期几
> x <- as.POSIXct('2018-11-20 12:12:12')
> format(x, "%w")
[1] "2"
【解决方案2】:
浏览了几个链接,我发现这里的最后一个答案是最有帮助的:How to find Previous Sunday in R
这是我想出的,使用lubridate:
> df$wbm<- lubridate::floor_date(df$date, "week") + days(1)
> weekdays(df$wbm)[1]
[1] "Monday"