我对上述问题有一个小问题。具体来说,我在R中有两个日期变量,起始和结束日期说:2000-1-1中的一个案例开始于2000-4-1结束。
我还有一个变量记录了这些日期内的一个医疗结果,比如2000-1-1,结果是20;在2000-2-1 / 2000-3-1 / 2000-4-1中,结果是30,30和50。
我想根据每个日期的持续时间来计算这些变量的平均值,在我们的例子中,平均值将是32.5(130/4)。
如何在R studio中实现它?提前致谢。
Ethan
答案 0 :(得分:0)
听起来你需要使用聚合函数来计算每个季度的值的总和。
已编辑看起来你没有使用年度季度作为你的时间间隔,而是三个月?所以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)
这是我能为您提供的最佳服务,请考虑在下次问题中使用变量名称和实际代码以获得更好的答案。