Calculate Proportion of a Group

后端 未结 1 1348
清酒与你
清酒与你 2021-01-29 09:21

I am trying to compute the fraction (%) of a each record from the group total in a dataframe. My data look like:

Where I have factors for Station, Month and PH

1条回答
  •  孤城傲影
    2021-01-29 10:21

    You can do it without summarise and it will work as expected. I doubled your data example so I have 2 groups to work with to show how it works.

    library(dplyr)
    
    bn_phyla %>% 
      group_by(Station, Month) %>% 
      mutate(prop = SumOfTotal_Caught/sum(SumOfTotal_Caught))
    
    # A tibble: 8 x 5
    # Groups:   Station, Month [2]
      Station Month  Phylum     SumOfTotal_Caught  prop
                              
    1 A       Feb-18 Annelida                  20 0.182
    2 A       Feb-18 Arthropoda                20 0.182
    3 A       Feb-18 Mollusca                  30 0.273
    4 A       Feb-18 Nemertea                  40 0.364
    5 B       Mar-18 Annelida                  40 0.333
    6 B       Mar-18 Arthropoda                30 0.25 
    7 B       Mar-18 Mollusca                  30 0.25 
    8 B       Mar-18 Nemertea                  20 0.167
    

    data:

    # data_frame comes from dplyr
    bn_phyla <- data_frame(Station = c(rep("A", 4), rep("B", 4)),
                           Month = c(rep("Feb-18", 4), rep("Mar-18", 4)),
                           Phylum = c("Annelida", "Arthropoda", "Mollusca", "Nemertea", "Annelida", "Arthropoda", "Mollusca", "Nemertea"),
                           SumOfTotal_Caught = c(20,20,30,40, 40,30,30,20))
    

    0 讨论(0)
提交回复
热议问题