2017-07-19 89 views
1

我对上述问题有个小问题。具体来说,我在R中有两个日期变量,起始日期和结束日期,例如:2000-1-1开始的一个案例以2000-4-1结束。根据日期持续时间汇总统计值R

我也有一个变量,记录在这些日期内的一个医疗结果,比如说在2000-1-1,结果是20;并在2000-2-1/2000-3-1/2000-4-1的结果是30,30和50.

我想根据每个日期的持续时间计算这些变量的平均值,在我们的情况平均值将是32.5(130/4)。

我该如何在R studio中实现它?提前致谢。

伊桑

回答

0

听起来像是你需要使用聚合函数来计算你的价值观的总和每个季度。

EDITED看起来你并没有使用一年的季度作为你的时间间隔,但是三个月?所以jan-apr是一个类别,may-aug是另一个类别,sep-dec是最后一个?

如果是这种情况,你不能使用lubridate :: quarter(),所以你需要编写自己的矢量化函数,处理这个三个月,并分配每个数字。

trimester <- function(date){ 
    if(lubridate::month(date) >= 1 & lubridate::month(date) <= 4) return(1) 
    if(lubridate::month(date) >= 5 & lubridate::month(date) <= 8) return(2) 
    if(lubridate::month(date) >= 9 & lubridate::month(date) <= 12) return(3)} 

VectorizedTrimester <- Vectorize(trimester)

那么你实际的聚合可以通过以下方式实现:这很容易通过做

aggregate(formula = OrderValue ~ VectorizedTrimester(OrderDate), FUN = mean)

这是我可以给你你提供了什么是最好的,下次考虑在您的问题中使用变量名称和实际代码以获得更好的答案。