函数“cut”提供了一种按“月”、“周”、“季度”剪切日期数据的简单方法,但我想按半个月剪切日期数据。有没有简单的方法可以做到这一点?
假设您指的是天文学意义上的半个月,其中第 1-15 天属于上半月,第 16 天以上属于下半月,连续的半个月用 A、B、C、... 表示, Y(I除外)然后创建一些测试数据x
然后计算其 POSIXlt 表示形式,以便我们可以选取年份(表示为自 1900 年以来的年数)、月份(表示为 0, 1, ..., 11)和月份中的日期(1, 2, 3, .. .)。然后我们计算半个月的索引LETTERS[-9]
并在其前面加上年份。请注意,这已经给出了分组向量,您不需要使用cut
at all.
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 问题应该有完整的示例,包括测试输入和预期输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)