【发布时间】:2019-12-05 11:00:58
【问题描述】:
我有一个数据集,每个参与者都有多个观察结果(列名=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
【问题讨论】:
-
&必须是|。(substr(diagnosis, 1,4)=="a101") | (substr(diagnosis,1,4)=="b101")。诊断不能同时是a101和b101。 -
您无需使用
substr,因为您正在尝试发现完全匹配。