r - 汇总/总和和 N/A 值
问题描述
我对聚合或 N/A 处理总和的方式有疑问。
我想要下表中每个 area.code 的总和
test <- read.table(text = "
area.code A B C D
1 0 NA 0.00 NA NA
2 1 0.0 3.10 9.6 0.0
3 1 0.0 3.20 6.0 0.0
4 2 0.0 6.10 5.0 0.0
5 2 0.0 6.50 8.0 0.0
6 2 0.0 6.90 4.0 3.1
7 3 0.0 6.70 3.0 3.2
8 3 0.0 6.80 3.1 6.1
9 3 0.0 0.35 3.2 6.5
10 3 0.0 0.67 6.1 6.9
11 4 0.0 0.25 6.5 6.7
12 5 0.0 0.68 6.9 6.8
13 6 0.0 0.95 6.7 0.0
14 7 1.2 NA 6.8 0.0
")
所以,看起来很简单:
aggregate(.~area.code, test, sum)
area.code A B C D
1 1 0 6.30 15.6 0.0
2 2 0 19.50 17.0 3.1
3 3 0 14.52 15.4 22.7
4 4 0 0.25 6.5 6.7
5 5 0 0.68 6.9 6.8
6 6 0 0.95 6.7 0.0
显然不是那么简单,因为在 aggregate() 命令中完全省略了区号 7。
但是,我希望 N/As 被完全忽略或计算为零值,哪个 na= 命令提供了该选项?
如果我只想要总和,则将所有 N/A 替换为 0 是一种选择……但是平均值确实有问题(因为它不再能够区分 0 和 N/A)
解决方案
如果您愿意考虑外部包(data.table
):
setDT(test)
test[, lapply(.SD, sum), area.code]
area.code A B C D
1: 0 NA 0.00 NA NA
2: 1 0.0 6.30 15.6 0.0
3: 2 0.0 19.50 17.0 3.1
4: 3 0.0 14.52 15.4 22.7
5: 4 0.0 0.25 6.5 6.7
6: 5 0.0 0.68 6.9 6.8
7: 6 0.0 0.95 6.7 0.0
8: 7 1.2 NA 6.8 0.0
推荐阅读
- c# - 在哪里可以找到在 cosmo DB 中创建的用户?
- graphql - 在 ravendb 中创建新文档时,元数据中缺少集合名称,并且该文档在 @empty 集合下标记
- html - 如何自定义在顶部显示标签的 Angular Material 步进器组件?
- javascript - 如何通过appendChild在Javascript中的多个tr中追加多个td?
- ruby-on-rails - 尝试使用 ActiveRecord 数据填充 JavaScript 数组
- java - 虽然循环在java中不重复
- android - 无法在 Android 中获取链接访问令牌(未设置访问令牌)
- c# - 可选择运行 blazor 服务器端
- r - 有没有办法可以使用向量简化下面的代码?
- javascript - Angular 7 - 只有“dist”文件夹在浏览器上呈现,而不是带有 nodejs 的“src”文件夹