Как получить месяц и неделю месяца от года и недели нет в R? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть столбец с указанием года и недели в году. Мне нужен месяц и неделя месяца из этого столбца. Любая помощь будет принята с благодарностью.

У меня есть x, мне нужны y и z.

x          y(month of the year)             z (week number of that month)
2016-11      3                                        3
2016-12      3                                        4
2018-01      1                                        1 
2019-10      3                                        2

Это то, что я пытался

as.Date(paste(x,sep=""),"%Y%U%u")

Ответы [ 2 ]

3 голосов
/ 10 мая 2019

Вот решение dplyr

library(dplyr)
df %>%
    mutate(
        x = as.POSIXct(strptime(paste0(x, "-1"), format = "%Y-%W-%u")),
        y = format(x, "%m"),
        z = 1 + as.integer(format(x, "%d")) %/% 7)
#           x  y z
#1 2016-03-14 03 3
#2 2016-03-21 03 4
#3 2018-01-01 01 1
#4 2019-03-11 03 2

Примечание. Предполагается, что даты year-weekno относятся к первому дню каждой недели.


или в базе R

transform(
    transform(df, x = as.POSIXct(strptime(paste0(x, "-1"), format = "%Y-%W-%u"))),
    y = format(x, "%m"),
    z = 1 + as.integer(format(x, "%d")) %/% 7)
#           x  y z
#1 2016-03-14 03 3
#2 2016-03-21 03 4
#3 2018-01-01 01 1
#4 2019-03-11 03 2
1 голос
/ 10 мая 2019

Ответ @ maurits-evers хороший, хотя я переписал его независимо от dplyr:

x <- c('2016-11', '2016-12', '2018-01', '2019-10')
x2 <- strptime(paste(x, "1"), format = "%Y-%W %u")
yw <- data.frame(x = x,
                 y = as.integer(format(x2, '%m')),
                 z = as.integer(format(x2, "%d")) %/% 7 + 1
                 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...