过滤在 R 中出现多次的条目
Filtering entries that appear more than once in R
从以下数据集中,我想要对不止一次就诊的患者 ID 进行计数。
pt_id <- c(1,1,1,1,1,2,2,2,3,3,3,3,3,4)
visit <- c(2019, 2019, 2019, 2019, 2020, 2019, 2019, 2020, 2019, 2019, 2019, 2019, 2020, 2019)
mydata <- data.frame(pt_id, visit)
mydata
与dplyr
:
library(dplyr)
mydata %>%
group_by(pt_id) %>%
filter(n() > 1) %>%
pull(pt_id) %>%
unique %>%
length
# [1] 3
使用 base - 只保留重复的 ID,计算唯一值:
length(unique(mydata[duplicated(mydata$pt_id), ][["pt_id"]]))
# [1] 3
你可以试试这个,
library(dplyr)
mydata%>%group_by(pt_id)%>%mutate(count=ifelse(cumsum(n())>1,1,0))
如果 count
是 1
那么患者就诊不止一次,依此类推。
附加选项
base
sum(table(mydata$pt_id) > 1)
#> [1] 3
另一个选项count
library(dplyr)
mydata %>%
count(pt_id) %>%
filter(n > 1) %>%
nrow
#[1] 3
从以下数据集中,我想要对不止一次就诊的患者 ID 进行计数。
pt_id <- c(1,1,1,1,1,2,2,2,3,3,3,3,3,4)
visit <- c(2019, 2019, 2019, 2019, 2020, 2019, 2019, 2020, 2019, 2019, 2019, 2019, 2020, 2019)
mydata <- data.frame(pt_id, visit)
mydata
与dplyr
:
library(dplyr)
mydata %>%
group_by(pt_id) %>%
filter(n() > 1) %>%
pull(pt_id) %>%
unique %>%
length
# [1] 3
使用 base - 只保留重复的 ID,计算唯一值:
length(unique(mydata[duplicated(mydata$pt_id), ][["pt_id"]]))
# [1] 3
你可以试试这个,
library(dplyr)
mydata%>%group_by(pt_id)%>%mutate(count=ifelse(cumsum(n())>1,1,0))
如果 count
是 1
那么患者就诊不止一次,依此类推。
附加选项
base
sum(table(mydata$pt_id) > 1)
#> [1] 3
另一个选项count
library(dplyr)
mydata %>%
count(pt_id) %>%
filter(n > 1) %>%
nrow
#[1] 3