r - 如何在忽略 NA 的同时计算 R 中的唯一值
问题描述
这是我的输入数据
key col_a col_b
a QQQ <NA>
a QQC <NA>
b <NA> ACQ
b <NA> ACQ
我想创建这个输出
key col_a col_b
a 2 0
b 0 1
我尝试使用 length(unique(x$col_a)) 来执行此操作,但它将 NA 计为值
我正在使用 data.tables 创建这个对象,它来自 ifelse() 语句。
我可以将我在 ifelse 语句中的值更改为其他值或计算唯一忽略 NA 的值吗?
解决方案
对于每一个key
我们可以在列中找到唯一值n_distinct
library(dplyr)
df %>%
group_by(key) %>%
summarise(across(col_a:col_b, n_distinct, na.rm = TRUE))
在data.table
这可以这样做:
library(data.table)
setDT(df)[, lapply(.SD, uniqueN, na.rm = TRUE), key, .SDcols = col_a:col_b]
key col_a col_b
1: a 2 0
2: b 0 1
推荐阅读
- date - 在 dart/Flutter 中解析日期以计算日差
- linux - 运行 docker 容器的问题包含 golang 项目
- docker - Docker 容器中的 Hugo 服务器在 Windows 10 中无法访问
- database - 没有功能依赖的关系模式的规范化
- mysql - '\xE7' 使用的正确字符集是什么
- r - 如何一次将数据帧中的多个不同相关矩阵成对转换?
- angular - “NullInjectorError: StaticInjectorError(AppModule)” DI 的新(角度 6+)方法出现错误
- mysql - MySQL - “删除用户”与“从用户中删除”
- racket - 定义:函数体只需要一个表达式,但发现了 1 个额外的部分
- android - SQLiteLog:(1)“事务”附近:语法错误