r - 如何按组对变量求和并确保组中的每个变量都是 NA 总和是 NA 而不是零?
问题描述
我有如下示例的数据:
| a | b |
|---|---|
| 1 | 1 |
| 1 | 0 |
| 2 | 1 |
| 2 | NA|
| 3 | 0 |
| 4 | NA|
| 4 | NA|
| 4 | NA|
| 5 | 1 |
| 5 | NA|
| 5 | 0 |
| 5 | 1 |
| 6 | 0 |
我需要通过求和来创建一个新的数据框b
,a
如果组中的每个数据都是 NA,则输出应该是 NA 而不是零,如下所示:
| a | b |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 0 |
| 4 | NA|
| 5 | 2 |
| 6 | 0 |
如何在 R 中构造一个总和以使其表现得像这样?
谢谢
解决方案
使用基本 R 选项aggregate
aggregate(. ~ a,
df,
function(x) ifelse(all(is.na(x)), NA, sum(x, na.rm = TRUE)),
na.action = na.pass
)
给
a b
1 1 1
2 2 1
3 3 0
4 4 NA
5 5 2
6 6 0
数据
> dput(df)
structure(list(a = c(1L, 1L, 2L, 2L, 3L, 4L, 4L, 4L, 5L, 5L,
5L, 5L, 6L), b = c(1L, 0L, 1L, NA, 0L, NA, NA, NA, 1L, NA, 0L,
1L, 0L)), class = "data.frame", row.names = c(NA, -13L))
´``
推荐阅读
- jquery - window.location.href 在 ios 设备中无法正常工作
- msbuild - 为什么即使我正在使用 MSBuild 任务也找不到项目文件?
- java - 为什么 WebSphere SAML SSO IDAssertion 调查 UserRegistry?
- android - 如何删除底部导航视图周围的边框
- windows - windows下安装Tensorflow报错如何解决?
- sql - 列出 DolphinDB 数据库中的表
- java - 从Java中的可变参数字符串中提取值
- android - BroadcastReceiver中的Android startActiviy
- excel - 在 Excel 的列块中附加键控行值
- java - 如何在 ViewHolder RecyclerView 适配器中单击时关闭底部表?