r - 仅计算正数日期之间的平均付款
问题描述
我有一个包含日期和付款列的数据框。这两列还包含一些 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)
上面的代码没有错误。这是正确的吗?或者有什么更好的主意?
非常感谢任何帮助:)。
解决方案
我们可以将“日期”列转换为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))
推荐阅读
- javascript - 为什么元素从设备移动到设备?
- selenium - 抓取Linkedin搜索结果
- c# - 是否可以在.net core Web api中调用js库
- airflow - 启动时的apache气流变量
- jquery - 引导选择附加选项并选择项目
- python - 需要帮助使用硒
- java - 为什么Java中的这个循环会导致堆栈溢出错误?
- android - 如果在单击开始按钮之前第一次单击,则单击停止记录器按钮会引发空异常
- python - ConnectionRefusedError: [Errno 61] Mac 上的连接被拒绝 Python3.8.5
- performance - 通过 Powershell 查找给定文件的完整路径的最快方法?