You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何从YYYYMMDDXX格式的周字段提取月份生成新列

方法1:直接字符串截取(效率最高)

因为week列的格式固定为YYYYMMDDXX,月份固定是整个字符串的第5-6位,直接转字符截取即可:

# 保留前导零,输出为字符类型(符合你要求的09、10格式)
x$month <- substr(as.character(x$week), 5, 6)

# 如果不需要前导零,要数值类型的月份,可再转数值
# x$month <- as.numeric(substr(as.character(x$week), 5, 6))

方法2:转日期格式后提取(适用性更广)

如果后续还要做日期相关的运算,建议先把前8位转成标准日期格式,再提取月份,容错性更高:

# 基础R实现,保留前导零
x$month <- format(as.Date(substr(as.character(x$week), 1, 8), format = "%Y%m%d"), "%m")

# 如果你用lubridate包处理日期,写法更简洁
library(lubridate)
# 输出数值型月份
x$month <- month(ymd(substr(as.character(x$week), 1, 8)))
# 要保留前导零的话补格式化即可
x$month <- sprintf("%02d", month(ymd(substr(as.character(x$week), 1, 8))))

两种方法输出的结果都和你给出的预期输出完全一致。


内容的提问来源于stack exchange,提问作者Jane Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:18:00