我拥有的数据包含从2000年到2020年的日期:
date[1:5]
# [1] "2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04" "2000-01-05"
str(date)
# Date[1:941], format: 2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04"..
我可以这样做:
indices <- cut(date, "year")
然后,从"2000-01-01"
到"2000-12-31"
的所有日期都将映射到"2000-01-01"
。
但是我希望从"1999-12-01"
到"2000-11-30"
的所有日期都映射到"2000-01-01"
。
我想要等价于cut(date, "year")
,但是将年份转换为从1月以外的月份开始。
我该怎么做?
答案 0 :(得分:1)
解决此问题的一种方法是定义所需中断和相关标签的序列。像这样:
date<-as.Date(c("2000-01-01", "2000-01-02", "2000-01-03", "2000-01-04", "2000-01-05"))
#define break points
cutpoints<-seq.Date(as.Date("1999-12-01"), by="1 year", length.out = 23)
#define labels (1 less than the number of breaks)
names<-seq.Date(as.Date("2000-01-01"), by="1 year", length.out = 22)
cut(date, breaks=cutpoints, labels = names)