如何“削减”日期半个月

时间:2015-11-28 03:04:35

标签: r

功能“剪切”提供了一种简单的方法,可以按“月”,“周”,“季度”缩短日期数据,但我希望将日期数据减少半个月。有没有一种简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

假设你的意思是在天文学意义上半个月,在这种情况下,第1-15天属于本月的上半月,16 +属于第二个,其中连续半个月用A,B,C,...表示。 ..,Y(除了我)然后创建一些测试数据x,然后计算它的POSIXlt表示,以便我们可以选择年份(表示为自1900年以来的年份),月份(表示为0,1, ......,11)和月中的某一天(1,2,3,......)。然后,我们计算LETTERS[-9]中半月的索引,并将年份前置于该值。请注意,这已经提供了分组向量,您根本不需要使用cut

x <- as.Date("2000-01-01") + seq(0, 100, 15) # test data
x
## [1] "2000-01-01" "2000-01-16" "2000-01-31" "2000-02-15" "2000-03-01"
## [6] "2000-03-16" "2000-03-31"

lt <- as.POSIXlt(x)
paste0(lt$year+1900, LETTERS[-9][2*lt$mon + 1 + (lt$mday > 15)])
## [1] "2000A" "2000B" "2000B" "2000C" "2000E" "2000F" "2000F"

请注意,对于未来,SO问题应该包含完整的示例,包括测试输入和预期输出。