r - 如何计算具有多个观察/行的参与者的数量,这些观察/行在列的不同行中具有值组合?
问题描述
我有一个数据集,每个参与者都有多个观察结果(列名=id)。在每次观察中,每个参与者都会得到一个诊断(列名=诊断)。
我想计算具有特定诊断组合的参与者人数。
请在下面找到可重现的 R 代码示例。我曾尝试按 id 对数据进行分组,按两个诊断的组合进行过滤,然后计算参与者的数量,但这不会返回任何数据。
您看到任何解决方案吗?
谢谢!
library(tidyverse)
id <- c(1,1,1,2,2,2,3,3,3)
diagnosis <- c("a101", "b101", "a101",
"c101", "c101", "c101",
"b101", "a101", "b101")
data <- data.frame(id, diagnosis, stringsAsFactors = FALSE)
n_a101_and_b101 <- data %>%
group_by(id) %>%
filter((substr(diagnosis,1,4)=="a101") &
(substr(diagnosis,1,4)=="b101")) %>%
tally()
n_a101_and_b101
解决方案
library(tidyverse)
id <- c(1,1,1,2,2,2,3,3,3)
diagnosis <- c("a101", "b101", "a101",
"a101", "c101", "c101",
"b101", "a101", "b101")
data <- data.frame(id, diagnosis, stringsAsFactors = FALSE)
data %>%
group_by(id) %>%
filter(sum(diagnosis == "a101") * sum(diagnosis == "b101") > 0) %>%
distinct(id) %>%
nrow()
# [1] 2
您也可以filter("a101" %in% diagnosis & "b101" %in% diagnosis)
用作替代方案。
推荐阅读
- macos - pp(perl 编译器)问题 - 仍然有依赖关系
- python - 使用 python 访问 JSON websocket 提要中的单个组件
- kubernetes - kubernetes 和 etcd:无操作,但指标“etcd_server_slow_apply_total”增加到 40
- oracle - 如何修复 ORA-01422:- Fetch 不起作用
- typescript - TypeScript 中作为类型的函数
- javascript - RxJS - 有条件地在管道中添加 observable
- python - 如何识别和标记列/数组中每第 n 个元素的序列中的异常或每五组中的“奇数”
- php - 如何在 WordPress PHP Twilio 中使用彩信回复入站短信
- javascript - recatjs 中的 from 验证不会发生?
- java - 为什么参数中的列表不能向上转换?