我有一个列,其中包含年份和年份。我需要该列中月份的月份和星期数。任何帮助将不胜感激。
我有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")
答案 0 :(得分:3)
这是一个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 :(得分:1)
@ 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
)