Получить соотношение между двумя столбцами после группы dplyr - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть фрейм данных следующим образом

Endo   Proc    Adenoma  
1      Colon    Y
1      Colon    Y
1      Colon    N
2      Colon    Y
2       OGD     N
3      Colon    Y
3      Colon    N
3       OGD     N

Я хочу найти пропорцию Proc, которые являются двоеточиями и имеют Y для Adenoma, сгруппированные по Endo.

В настоящее время я использую длинный код, как показано ниже:

    MyColonDataAdenomaDetectionByEndoscopist <-
      dataframe[grep(".*[Aa]denom.*", dataframe[, Adenoma]),]

    MyColonDataAdenomaDetectionByEndoscopist <-
      MyColonDataAdenomaDetectionByEndoscopist %>%
      group_by_(Endo) %>%
      do(data.frame(NumAdenomas = nrow(.)))

 MyColonDataADR <-
      full_join(
        MyColonDataAdenomaDetectionByEndoscopist,
        MyColonDataColonoscopiesByEndoscopist,
        by = Endo
      )
    MyColonDataADR$PropAdenomas <-
      (MyColonDataADR$NumAdenomas / MyColonDataADR$NumColons) * 100

Я уверен, что могу сократить это.В конце я хочу, чтобы это было как функция, так как позже я сделаю несколько подобных вещей.

Проблема, с которой я столкнулся, заключается в возможности сделать две группировки в одной dplyr трубе (я группирую, чтобы увидеть всеProc называется Colon выполненным каждым Endo, а затем просто сгруппируйте число Colon, которое также положительно для Adenoma по каждому Endo, а затем разделите одно на другое, чтобы получить пропорцию.

Есть ли более простой способ сделать это?

1 Ответ

0 голосов
/ 12 февраля 2019
library(dplyr)
df %>% 
  group_by(Endo) %>% 
  summarise(Co_por=(sum(Proc=='Colon' & Adenoma=='Y')/n())*100,
            Nobs=n(),Pat_Col=sum(Proc=='Colon')) 

# A tibble: 3 x 4
    Endo Co_por  Nobs Pat_Col
   <int>  <dbl> <int>   <int>
1     1   66.7     3       3
2     2   50       2       1
3     3   33.3     3       2

С ?dplyr::n()

Количество наблюдений в текущей группе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...