过滤在 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))

如果 count1 那么患者就诊不止一次,依此类推。

附加选项 base

sum(table(mydata$pt_id) > 1)
#> [1] 3

另一个选项count

library(dplyr)
mydata %>% 
   count(pt_id) %>%
   filter(n > 1) %>% 
   nrow
#[1] 3