我想知道是否有办法根据R中的周数来获得周日期的开始?例如,如果我输入周数= 10,它应该给我2014年3月9日.
我知道如何获得反向(也就是说...给出一个日期,通过使用as.POSIX函数获取周数).
谢谢!Prakhar
您可以试试ISOweek2datepackage 中的功能ISOweek。
创建一个以年、周、工作日为参数并返回日期的函数:
date_in_week <- function(year, week, weekday){
w <- paste0(year, "-W", sprintf("%02d", week), "-", weekday)
ISOweek2date(w)
}
date_in_week(year = 2014, week = 10, weekday = 1)
# [1] "2014-03-03"
Run Code Online (Sandbox Code Playgroud)
该日期对应于 ISO8601 日历(参见%V中的?strptime)。我假设您使用的是美国约定(参见%U参考资料?strptime)。然后需要一些 tweeking 来在 ISO8601 和美国标准之间转换:
date_in_week(year = 2014, week = 10 + 1, weekday = 1) - 1
# [1] "2014-03-09"
Run Code Online (Sandbox Code Playgroud)
您可以输入几个工作日,例如
date_in_week(year = 2014, week = 10 + 1, weekday = 1:3) - 1
# [1] "2014-03-09" "2014-03-10" "2014-03-11"
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
first.day <- as.numeric(format(as.Date("2014-01-01"), "%w"))
week <- 10
as.Date("2014-01-01") + week * 7 - first.day
# [1] "2014-03-09"
Run Code Online (Sandbox Code Playgroud)
假设星期日开始数周.首先,找到1月1日的哪一天,然后,只需将1*周加到1月1日,即1月1日的星期几.
请注意,这与您%W在执行相反操作时使用的内容略有不同,因为从该角度来看,一周的第一天似乎是星期一:
format(seq(as.Date("2014-03-08"), by="1 day", len=5), "%W %A %m-%d")
# [1] "09 Saturday 03-08" "09 Sunday 03-09" "10 Monday 03-10" "10 Tuesday 03-11"
# [5] "10 Wednesday 03-12"
Run Code Online (Sandbox Code Playgroud)
但如果您更喜欢星期一中心视图,则可以轻松调整上述代码.
| 归档时间: |
|
| 查看次数: |
2511 次 |
| 最近记录: |