【问题标题】:Aggregate data by irregular time periods ("xts" library)按不规则时间段聚合数据(“xts”库)
【发布时间】:2021-03-17 17:06:33
【问题描述】:

我正在尝试在此处关注此堆栈帖子:How to get sum of values every 8 days by date in data frame in R

有谁知道为什么这不起作用?

library(xts)

set.seed(123)
    

    property_damages_in_dollars <- rnorm(731,100,10)

    date_decision_made <- format(as.Date(date_decision_made), "%Y/%m/%d")
    
   other_damages_in_dollars <- rnorm(731,10,10)

final_data <- data.frame(date_decision_made, other_damages_in_dollars, property_damages_in_dollars)

    ep <- endpoints(final_data,'days',k=8)
    a = period.apply(x=final_data,ep,FUN=sum )

注意:对于两个变量,这段代码可以工作吗?

dat <- xts(cbind(final_data$property_damages_in_dollars, final_data$other_damages_in_dollars),
           as.Date(final_data$date_decision_made, '%Y/%m/%d'))
ep <- endpoints(dat,'days',k=8)
a = period.apply(x=dat,ep,FUN=sum )

【问题讨论】:

    标签: r time-series aggregate xts


    【解决方案1】:

    你有一个数据框,把它改成xts对象。

    library(xts)
    
    dat <- xts(final_data$property_damages_in_dollars, 
               as.Date(final_data$date_decision_made, '%Y/%m/%d'))
    ep <- endpoints(dat,'days',k=8)
    a = period.apply(x=dat,ep,FUN=sum )
    

    【讨论】:

    • 感谢您的回答。如果你有两个变量,你还能使用这段代码吗? dat
    • 我猜你可以手动复制并粘贴“Ronal Shah's”的代码两次,然后将其组合成一个对象?
    • 对于多个列,您可以通过排除日期列dat &lt;- xts(final_data[-1], as.Date(final_data$date_decision_made, '%Y/%m/%d')) 来创建dat,然后将period.apply 用作period.apply(x=dat,ep,FUN=colSums) @stats555
    • 感谢罗纳克!有没有一种简单的方法来绘制“a”?
    • 我与xts 合作不多,但plot(a) 似乎有所帮助
    【解决方案2】:

    稍微修改Ronak Shah's code:

    #first variable
    dat <- xts(final_data$property_damages_in_dollars, 
               as.Date(final_data$date_decision_made, '%Y/%m/%d'))
    ep <- endpoints(dat,'days',k=8)
    a = period.apply(x=dat,ep,FUN=sum )
    
    #second variable
    dat <- xts(final_data$other_damages_in_dollars, 
               as.Date(final_data$date_decision_made, '%Y/%m/%d'))
    ep <- endpoints(dat,'days',k=8)
    b = period.apply(x=dat,ep,FUN=sum )
    
    #combine - not a very efficient way to solve this
    
    a = data.frame(a)
    b = data.frame(b)
    c = cbind(a,b)
    

    【讨论】:

    • 你能解释一下你改变了什么,为什么?
    猜你喜欢
    • 2014-04-12
    • 2014-04-23
    • 2021-01-15
    • 2015-06-04
    • 2016-01-10
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多