Сколько тестов проведено для пациентов с подозреваемой категорией только в, R - PullRequest
2 голосов
/ 22 апреля 2020

У меня есть воспроизводимый пример. У меня есть дубликаты идентификаторов. Некоторые подозреваются, некоторые нет.

structure(list(id = c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4), test = c("susp", 
"susp", "neg", "pos", "pos", "neg", "pos", "susp", "susp", "neg"
)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

Тем не менее, мне интересно получить количество:

  1. Общее количество подозреваемых пациентов

  2. из те клиенты, которые подозреваются, что прошли многократное тестирование независимо от результата.

  3. хотят получить общее количество тех, у кого есть два и три подозреваемых.

ПРЕДУПРЕЖДАЕТ !! Если бы это можно было сделать с помощью Tidyverse, это было бы удивительно. образец того, как должна выглядеть таблица, см. ниже.

structure(list(id = c(1, 4), number_of_test_for_suspected_pat = c(2, 
2)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
))

И дополнительный тибет с количеством подозреваемых пациентов с последующими тестами.

1 Ответ

2 голосов
/ 22 апреля 2020

Мы можем filter вывести 'идентификаторы, которые не имеют' подозрительных 'случаев, а затем получить sum логического `вектора

library(dplyr)
df1 %>%
    group_by(id) %>% 
    filter('susp' %in% test) %>% 
    summarise(number_of_test_for_suspected_pat = sum(test == 'susp'),
    n_greater_than_3 = number_of_test_for_suspected_pat >=3) %>%
     mutate(Total = sum(number_of_test_for_suspected_pat), 
         n_greater_than_3_count = sum(n_greater_than_3))
# A tibble: 2 x 5
#     id number_of_test_for_suspected_pat n_greater_than_3 Total n_greater_than_3_count
#  <dbl>                            <int> <lgl>            <int>                  #<int>
#1     1                                2 FALSE                4                      0
#2     4                                2 FALSE                4                      0

Или сделать filter первый

df1 %>%
   filter(test == 'susp') %>%
   count(id) %>%
   mutate(Total = sum(n))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...