如何一次性汇总几年数据的天数?

时间:2019-04-02 02:49:14

标签: r

我有与此类似的数据。我想对一天进行一次总和(我不确定“总和”一词的正确与否)并创建一个新列“日期”,以便新列总和将3年数据的数量按升序排列。 / p>

a

我做了这段代码,但是结果是错误的,而且时间太长。由于2月只有28天,因此无法正确计算2月。还有更短的方法吗?

    year  month day
    2011    1   5
    2011    2   14
    2011    8   21
    2012    2   24
    2012    3   3
    2012    4   4
    2012    5   6
    2013    2   14
    2013    5   17
    2013    6   24

谢谢您的帮助!

1 个答案:

答案 0 :(得分:3)

使用Date类。日期和时间很复杂,请寻找工具为您执行此操作,而不要自己编写。选择您想要的任何一个:

df$date = with(df, as.Date(paste(year, month, day, sep = "-")))

df$julian_day = as.integer(format(df$date, "%j"))
df$days_since_2010 = as.integer(df$date - as.Date("2010-12-31"))

df
#    year month day       date julian_day days_since_2010
# 1  2011     1   5 2011-01-05          5               5
# 2  2011     2  14 2011-02-14         45              45
# 3  2011     8  21 2011-08-21        233             233
# 4  2012     2  24 2012-02-24         55             420
# 5  2012     3   3 2012-03-03         63             428
# 6  2012     4   4 2012-04-04         95             460
# 7  2012     5   6 2012-05-06        127             492
# 8  2013     2  14 2013-02-14         45             776
# 9  2013     5  17 2013-05-17        137             868
# 10 2013     6  24 2013-06-24        175             906
# using this data
df = read.table(text = "year  month day
    2011    1   5
    2011    2   14
    2011    8   21
    2012    2   24
    2012    3   3
    2012    4   4
    2012    5   6
    2013    2   14
    2013    5   17
    2013    6   24", header = TRUE)

这全部使用基数R。如果您经常处理日期和时间,则可能还需要查看lubridate包。