используя lubridate
пакет, вы можете рассчитать следующим образом:
df <- data.frame(
year = c(1970,1970,1970,1970,1970,1970,2019,2019,2019,2019),
month = c(1,1,1,1,2,2,11,12,12,12),
week = c(1,2,3,4,5,6,47,48,49,50)
)
df$year_first_day <- lubridate::ymd(paste(df$year, '0101', sep = ''))
df$year_first_monday <- lubridate::ceiling_date(df$year_first_day, unit = 'weeks', week_start = 1)
df$date <- lubridate::dweeks(df$week - 1) + df$year_first_monday
df
# year month week year_first_monday year_first_day date
# 1 1970 1 1 1970-01-05 1970-01-01 1970-01-05
# 2 1970 1 2 1970-01-05 1970-01-01 1970-01-12
# 3 1970 1 3 1970-01-05 1970-01-01 1970-01-19
# 4 1970 1 4 1970-01-05 1970-01-01 1970-01-26
# 5 1970 2 5 1970-01-05 1970-01-01 1970-02-02
# 6 1970 2 6 1970-01-05 1970-01-01 1970-02-09
# 7 2019 11 47 2019-01-07 2019-01-01 2019-11-25
# 8 2019 12 48 2019-01-07 2019-01-01 2019-12-02
# 9 2019 12 49 2019-01-07 2019-01-01 2019-12-09
# 10 2019 12 50 2019-01-07 2019-01-01 2019-12-16