我有一个数据集,其中包含组合形成单个整数的年份和月份。
示例数据集:
dataset = c(201601, 201602, 201603, 201604,201605,201606,201607,201608,201609,201610, 201611 ,201612 )
我想从R中的每条记录中仅提取月份部分。 预期的输出是:
dataset_months = c(01, 02, 03, 04,05,06,07,08,09,10,11,12 )
我该如何表演?
答案 0 :(得分:3)
我们可以使用substr
substr(dataset, nchar(dataset)-1, nchar(dataset))
#[1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12"
或sub
sub(".{4}", "", dataset)
或使用Date
操作的选项
library(zoo)
format(as.yearmon(as.character(dataset), "%Y%m"), "%m")
#[1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12"
答案 1 :(得分:3)
您的预期输出似乎是一个字符串,我建议您将保留整数世界以提高效率和便利性,例如(这个想法来自here)
((dataset / 100) %% 1) * 100
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
## OR just `dataset - 201600` ?
你也可以使用substring
轻松实现这一目标(如果你想要一个character
向量)
substring(dataset, 5)
# [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12"
或者您可以进行日期操作
as.POSIXlt(paste0(as.character(dataset), "01"), format = "%Y%m%d")$mon + 1L
# [1] 1 2 3 4 5 6 7 8 9 10 11 12