【问题标题】:convert irregular 6hourly data to daily accumulated using R使用 R 将不规则的 6 小时数据转换为每日累积的数据
【发布时间】:2018-02-27 19:25:27
【问题描述】:

我有以下数据:

 Date,Rain
 1979_8_9_0,8.775
 1979_8_9_6,8.775
 1979_8_9_12,8.775
 1979_8_9_18,8.775
 1979_8_10_0,0  
 1979_8_10_6,0
 1979_8_10_12,0
 1979_8_10_18,0 
 1979_8_11_0,8.025
 1979_8_12_12,0
 1979_8_12_18,0 
 1979_8_13_0,8.025

[1] 数据为 6 小时,但某些日期的 6 小时数据不完整。例如,August 11 1979 只有一个值 00H。我想使用 R 从此类数据中获取每日累积的数据。关于如何在 R 中轻松完成此操作有什么建议吗?

我将不胜感激。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以通过以下方式轻松地将数据转换为日期:

    dat$Date <- as.Date(strptime(dat$Date, '%Y_%m_%d_%H'))
    

    之后你应该聚合:

    aggregate(Rain ~ Date, dat, sum)
    

    结果:

            Date   Rain
    1 1979-08-09 35.100
    2 1979-08-10  0.000
    3 1979-08-11  8.025
    4 1979-08-12  0.000
    5 1979-08-13  8.025
    

    根据 Henrik 的评论,您还可以转换为日期:

    dat$Date <- as.Date(dat$Date, '%Y_%m_%d')
    

    【讨论】:

    • 因为“按照指定格式尽可能处理字符串:忽略任何尾随字符”,as.Date("1979_8_9_0", format = "%Y_%m_%d") 就足够了。
    • @Henrik 这很方便。不知道!更新了我的答案以反映:-)
    • 谢谢大家的帮助。 :-)
    • @h3rm4n 这和“格式字符串中不属于转换规范的任何字符都按字面解释”可以在解析日期时避免大量正则表达式/strspliting . as.Date("Year: 1979, Month: 8, Day: 9, was a magic time", format = "Year: %Y, Month: %m, Day: %d")
    • @h3rm4n,我的一个数据有太多缺失值。我遇到此错误 Summary.factor 中的错误(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), na.rm = FALSE) : 'sum' 对因子调用没有意义:聚合... aggregate.data.frame -> lapply -> FUN -> lapply -> Summary.factor 执行停止 我试图在聚合函数中添加 na.action=na.pass 但它不起作用。当我还在 na.action 之前添加 na.rm=TRUE 时,也会发生同样的情况。有什么建议可以纠正这个问题?
    【解决方案2】:
    # split the "date" variable into new, separate variable
    splitDate <- stringr::str_split_fixed(string = df$Date, pattern = "_", n = 4)
    
    df$Day    <- splitDate[,3]
    
    
    # split data by Day, loop over each split and add rain variable
    unlist(lapply(split(df$Rain, df$Day), sum))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 2013-05-02
      • 2015-10-31
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      相关资源
      最近更新 更多