Рассчитать процент вхождения в R - PullRequest
0 голосов
/ 09 апреля 2019

Я провел диетический анализ у видов хищников, и я хотел бы рассчитать процент встречаемости жертв на трех разных стадиях цикла размножения. Я бы хотел, чтобы в данном случае был указан процент от размера выборки. В качестве примера, если размер выборки составляет 135, а у меня встречается Ортоптера 65. Я хотел бы рассчитать процент: 65/135.

До сих пор я пробовал с длинной версией без успеха. Результат, который я получаю, не верен. Любая помощь настоятельно рекомендуется, и извините, если этот вопрос повторно.

Набор необработанных данных выглядит следующим образом:

set.seed(123)
pellets_2014<-data.frame(
    Period = sample(c("Prebreeding","Breeding","Postbreedng"),12, replace=TRUE),
    Orthoptera = sample(0:10, 12,replace=TRUE),
    Coleoptera=sample(0:10,12,replace = TRUE),
    Mammalia=sample(0:10,12, replace=TRUE))
##I transform the file to long format
##Library all the necessary packages 
library(dplyr)
library(tidyr)
library(scales)
library(naniar)
pellets2014_long<-gather(pellets_2014,Categories, Count, c(Orthoptera,Coleoptera,Mammalia))

##I trasnform the zero values to NAs

pellets2014_NA<-pellets2014_long %>% replace_with_na(replace = list(Count = 0))

## Try to calculate the occurence 
Occurence2014<-pellets2014_NA %>% 
    group_by(Period,Categories) %>%
    summarise(n=n())

## I do get here but I don't get the right number of occurence and I am stuck how to get the right percentage
##If I try this: 

Occurence2014<-pellets2014_NA %>% 
    group_by(Period,Categories) %>%
    summarise(n=n())%>%mutate(Freq_n=n/sum(n)*100) 

##The above is also wrong because I need it to be divide by the sample size in each period (here is 4 samples per period, the overall sample size is 12)!

Выходными данными должны быть вхождение и процент вхождения для его категории добычи в каждом Периоде. Как показано на рисунке ниже

Желаемый выход

Ответы [ 2 ]

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

Как то так?

Occurence2014 <- pellets2014_NA %>% 
 group_by(Period) %>%
 mutate(period_sample_size = n()) %>%
 ungroup() %>%
 group_by(Period,Categories,period_sample_size) %>%
 summarise(n=n())%>%
 mutate(Freq_n=n/period_sample_size*100)
0 голосов
/ 09 апреля 2019

Это близко к тому, что вы ищете?

Occurence2014 <- pellets2014_NA %>% 
  group_by(Period,Categories) %>%
  summarise(n = n()) %>%
  ungroup() %>% 
  mutate(
    freq = n / sum(n)
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...