我有特定格式的数据year_isoweek,例如本周的2019_31。我希望将其表示为进一步处理的日期。
基本r
和lubridate
;
我发现了一些有价值的解决方法,但这些方法都不能与ISO 8601(%V)一起使用,从而又导致其他问题:
convert year week string to date
Convert week number to date
Transform year/week to date object
a <- c("2019_7", "2019_3", "2018_18")
as.Date(a, "%Y_%V")
实际输出:
[1] "2019-07-31" "2019-07-31" "2018-07-31"
我想要什么:
"2019-02-11" "2019-01-14" "2018-04-30"
作为类date
答案 0 :(得分:0)
好的,我找到了使用软件包ISOweek
的解决方案:
library(ISOweek)
library(stringr)
a <- c("2019", "2019", "2018")
b <- str_pad(c("7", "3", "18"), 2, pad = "0")
c <- ISOweek2date(paste0(a,"-W",b, "-",1))
str(c)
Date[1:3], format: "2019-02-11" "2019-01-14" "2018-04-30"
与
完全一样
根据需要,将"2019-02-11" "2019-01-14" "2018-04-30"
设为班级date
!
ISOweek
有一个不便之处,因为它不接受单个数字或单个char字符串作为星期编号(例如,不接受“ 7”,仅接受“ 07”)。因此,也需要stringr
软件包。