首页 > 解决方案 > 仅计算正数日期之间的平均付款

问题描述

我有一个包含日期和付款列的数据框。这两列还包含一些 NA 值。问题是计算 2009 年 1 月 1 日至 2015 年 12 月 31 日之间的平均付款,仅考虑正付款,并从计算中删除 NA 值。

这是我的代码:

average <- mean(df$payment[which(df$payment > 0)] [with(df, df$date >= "2009-01-01" & df$date <= "2015-12-31", na.rm = TRUE)], na.rm = TRUE)

上面的代码没有错误。这是正确的吗?或者有什么更好的主意?

非常感谢任何帮助:)。

标签: rdataframe

解决方案


我们可以将“日期”列转换为Date类(如果它没有被转换),然后通过创建一个支付大于 0 的逻辑向量来对“支付”进行子集化,并且(&)“日期”列的值在“ 2009-01-01' 到 '2015-12-31',得到mean

df$date <- as.Date(df$date)
with(df,  mean(payment[payment > 0 & 
                       date >= as.Date("2009-01-01") & 
                       date <= as.Date("2015-12-31")], na.rm = TRUE))

推荐阅读