删除R中的整数部分

时间:2017-01-03 10:56:29

标签: 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 )

我该如何表演?

2 个答案:

答案 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