вычислить индекс Брето с R - PullRequest
0 голосов
/ 30 апреля 2019

Вот у меня есть фрейм данных, и я хочу вычислить индекс Брето

## Here is the table

commune container   house   aegypti albopictus
yde4       c1            h1    6        6
yde2       c2            h2    2        3
yde7       c3            h3    1        0
yde7       c3            h4    1        1
yde7       c5            h5    8        0
yde7       c6            h6    0        0
yde4       c7            h7    4        1
yde7       c8            h8    14       9
yde3       c9            h9    0        1
yde3       c10           h10   6        2

## here is how it should display

                                        aegypti                albopictus   
com    house_pros     c_found   Pos_container     In    Pos_container   In
yde2    1              1             1            100          1        100     
yde3    2              2             1             50          2        100
yde4    2              2             2            100          2        100
yde7    4              5             4            100          2        40
Total   9              10            8             88          7        70

`com = коммуна, house_pros = номер предполагаемого дома, c_found = номер контейнера, найденного в каждой коммуне, pos_container = номер позитивного контейнера (контейнера, в котором был найден как минимум один aegypti или albopictus) на коммуну и для каждый вид (aegypti или albopictus) (учитывая, что у нас может быть более одного контейнера в доме), и In = рассчитанный индекс Брето ((количество положительных контейнеров / число предполагаемых домов) * 100. Индекс рассчитывается для каждого вида и для каждой коммуны. И суммируются строка и столбец.

Я не смог найти подходящий код.

Может ли кто-нибудь помочь мне с правильным?

1 Ответ

0 голосов
/ 30 апреля 2019

Вот один подход, использующий dplyr, сначала вычислите house_pros, c_found и aegypti_Pos_container, используя summarize, затем добавьте строку в конце для Total, используя bind_rows.Используйте те же шаги для albopictus

library(dplyr)
df %>% group_by(commune) %>% 
       summarise(house_pros=n_distinct(container),    #See dplyr::n_distinct
                 c_found=n(),                         # Size of each group
                 aegypti_Pos_container=sum(aegypti!=0)) %>%  #Num of aegypti !=0
       bind_rows(.,tibble(commune='Total',house_pros=sum(.$house_pros),c_found=sum(.$c_found),
                          aegypti_Pos_container=sum(.$aegypti_Pos_container))) %>% 
       mutate(aegypti_In=(aegypti_Pos_container/house_pros)*100)


# A tibble: 5 x 5
  commune house_pros c_found aegypti_Pos_container aegypti_In
  <chr>        <int>   <int>                 <int>      <dbl>
1 yde2             1       1                     1      100  
2 yde3             2       2                     1       50  
3 yde4             2       2                     2      100  
4 yde7             4       5                     4      100  
5 Total            9      10                     8       88.9
...