r语言 - strftime()偏移日期一天的问题?



只是开发一些代码来从一个带有read_xlsx的Excel电子表格中导入每日数据,并按年和月进行汇总和求和。创建年和月列,然后使用strftime()用从日日期列中提取的字符年和月填充它们。发现它将1989和12放在年份和月份列中以表示1990-01-01的日期。一直往下,所有填满的年份& &;月退一天。

str(daily_dat)
data.frame':    11688 obs. of  3 variables:
$ day_date: POSIXct, format: "1990-01-01" "1990-01-02" ...
$ prcp_mm : num  0 14.99 4.06 0 0 ...
day_date    prcp_mm
1990-01-01  0
1990-01-02  14.986
1990-01-03  4.064
1990-01-04  0
1990-01-05  0
1990-01-06  0
1990-01-07  0
1990-01-08  1.016
1990-01-09  0
1990-01-10  0
1990-01-11  0
1990-01-12  0
1990-01-13  0
1990-01-14  0
1990-01-15  0
1990-01-16  0
1990-01-17  0
1990-01-18  0
1990-01-19  6.858
1990-01-20  0
1990-01-21  0
1990-01-22  3.048
1990-01-23  2.032
1990-01-24  0
1990-01-25  0
1990-01-26  0
1990-01-27  0
1990-01-28  0
1990-01-29  0
1990-01-30  0
1990-01-31  0
1990-02-01  0
1990-02-02  0`
daily_1$year<-strftime(daily_1$day_date,"%Y")
daily_1$month<-strftime(daily_1$day_date,"%m")
head(daily_1,33)
day_date    prcp_mm year    month
1990-01-01  0   1989    12
1990-01-02  14.986  1990    1
1990-01-03  4.064   1990    1
1990-01-04  0   1990    1
1990-01-05  0   1990    1
1990-01-06  0   1990    1
1990-01-07  0   1990    1
1990-01-08  1.016   1990    1
1990-01-09  0   1990    1
1990-01-10  0   1990    1
1990-01-11  0   1990    1
1990-01-12  0   1990    1
1990-01-13  0   1990    1
1990-01-14  0   1990    1
1990-01-15  0   1990    1
1990-01-16  0   1990    1
1990-01-17  0   1990    1
1990-01-18  0   1990    1
1990-01-19  6.858   1990    1
1990-01-20  0   1990    1
1990-01-21  0   1990    1
1990-01-22  3.048   1990    1
1990-01-23  2.032   1990    1
1990-01-24  0   1990    1
1990-01-25  0   1990    1
1990-01-26  0   1990    1
1990-01-27  0   1990    1
1990-01-28  0   1990    1
1990-01-29  0   1990    1
1990-01-30  0   1990    1
1990-01-31  0   1990    1
1990-02-01  0   1990    1
1990-02-02  0   1990    2
str(daily_1)
'data.frame':   11688 obs. of  4 variables:
 $ day_date: POSIXct, format: "1990-01-01" "1990-01-02" ...
 $ prcp_mm : num  0 14.99 4.06 0 0 ...
 $ year    : chr  "1989" "1990" "1990" "1990" ...
 $ month   : chr  "12" "01" "01" "01" ...

搞什么鬼?

不用strftime,试试daily_1$month <- format(daily_1$day_date, '%m')

最新更新