#r #repeat
#r #повторение
Вопрос:
Из следующего набора данных мне нужно количество идентификаторов пациентов с более чем одним посещением.
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
Ответ №1:
дополнительная опция base
R
sum(table(mydata$pt_id) > 1)
#> [1] 3
Ответ №2:
С dplyr
:
library(dplyr)
mydata %>%
group_by(pt_id) %>%
filter(n() > 1) %>%
pull(pt_id) %>%
unique %>%
length
# [1] 3
С помощью base — сохраняйте только дублированные идентификаторы, считайте уникальные значения:
length(unique(mydata[duplicated(mydata$pt_id), ][["pt_id"]]))
# [1] 3
Ответ №3:
Вы можете попробовать это,
library(dplyr)
mydata%>%group_by(pt_id)%>%mutate(count=ifelse(cumsum(n())>1,1,0))
Если count
это 1
, то у пациента было более одного посещения и так далее.
Ответ №4:
Другой вариант с count
library(dplyr)
mydata %>%
count(pt_id) %>%
filter(n > 1) %>%
nrow
#[1] 3