r - 忽略 NA 的每个变量的 R-Count n
问题描述
我有以下数据结构:
id val1 val2 val3
1 1 5 2
1 2 7 5
2 2 2 NA
2 NA 4 NA
3 4 8 4
3 3 NA 4
我想计算每个变量的观察次数,不包括 NA 值。结果应该是这样的:
id val1 val2 val3
1 2 2 2
2 1 2 NA
3 2 1 2
我尝试了以下几行,但它不起作用:
df %>%
group_by(id) %>%
summarise_all(funs(n(., na.rm = TRUE)))
希望得到您的建议和建议。
解决方案
您可以使用sum(!is.na(.))
计算非 NA 值。
library(dplyr)
df %>% group_by(id) %>% summarise(across(.fns = ~sum(!is.na(.))))
# id val1 val2 val3
# <int> <int> <int> <int>
#1 1 2 2 2
#2 2 1 2 0
#3 3 2 1 2
在基础 R 中:
aggregate(.~id, df, function(x) sum(!is.na(x)), na.action = 'na.keep')
推荐阅读
- javascript - 下拉列表为空时禁用按钮
- azure-sql-database - 数据库已达到其大小配额。分区或删除数据、删除索引或查阅文档以获取可能的解决方案
- regex - 使用多格式解析器 (Regex) 在 FluentD 中解析 Nginx 入口访问日志
- python - 正则表达式模式的新手。如何捕获多行?
- r - Gggplot grid.arrange all in one row 看起来像一个无缝的情节
- node.js - 使用 bcrypt 散列密码时出错:找不到模块 bcrypt_lib.node
- pepper - 编排中的时间线回到原始位置
- python - 创建一个 Python 函数,将一列的值替换为另一列的值
- c - C语言函数的内存地址
- javascript - JS:将一个对象解构为另一个具有重命名属性的对象