我有与此类似的数据。我想对一天进行一次总和(我不确定“总和”一词的正确与否)并创建一个新列“日期”,以便新列总和将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
谢谢您的帮助!
答案 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
包。