2017-01-03 101 views
-5

我有一个数据集,其中包括年份和月份组合形成一个整数。删除R中整数的一部分

示例数据集:

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) 

如何执行呢?

回答

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 
3

我们可以通过操纵Date使用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) 

或期权

library(zoo) 
format(as.yearmon(as.character(dataset), "%Y%m"), "%m") 
#[1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12"