从R中的YYYYMM列中提取月份
我试图提取它,但这些方法似乎只适用于YYYY-MM。我用日期(YYYYMM)表示数据,并试图用月份表示数据,例如:month 最后,我希望它看起来像这样:从R中的YYYYMM列中提取月份,r,R,我试图提取它,但这些方法似乎只适用于YYYY-MM。我用日期(YYYYMM)表示数据,并试图用月份表示数据,例如:month 最后,我希望它看起来像这样: ID Date Month 1 200402 2 2 200603 3 3 200707 7 我这样做是希望绘制月平均值。假设您的日期列是数字,您可以使用模数: df$Month <- df$Date %% 100 df ID Date Mon
ID Date Month
1 200402 2
2 200603 3
3 200707 7
我这样做是希望绘制月平均值。假设您的
日期列是数字,您可以使用模数:
df$Month <- df$Date %% 100
df
ID Date Month
1 1 200402 2
2 2 200603 3
3 3 200707 7
df$Month您可以提取Date
列的最后两个字符
sub('.*(..)$', '\\1', df$Date)
#Or without capture groups suggested by @Tim Biegeleisen
#sub("^.*(?=..$)", "", df$Date, perl = TRUE)
#[1] "02" "03" "07"
然而,理想情况下,应该避免使用正则表达式解析日期时间的信息。将其转换为日期,然后提取月份
format(as.Date(paste(df$Date, '01'), "%Y%m%d"), '%m')
#Or with zoo::yearmon
#format(zoo::as.yearmon(as.character(df$Date), "%Y%m"), '%m')
您只需使用以下方法即可:
library(stringr)
str_sub(df$Date,-2,-1)
或使用
df['Date'].str[-2:]
希望这有帮助 我更喜欢:sub(“^.*(=..$)”,”,df$Date)
,因为它避免了捕获组。谢谢@TimBiegeleisen。捕获组是否有特定的劣势?是的,有。捕获组要求引擎使用比不需要/使用它们的正则表达式更多的存储。这是个小问题,但值得一提。
df['Date'].str[-2:]