我有一个数据框,其中关于草食动物寄生month
的月度数据result
用于各种类型的寄生虫命令'psitorder',其水平为“膜翅目”或“双翅目”。 result
对于寄生的食草动物来说是“p”,如果草食动物成长为“a”,或者没有数据,因为草食动物在圈养中死亡。
df<-data.frame(month= c(rep(1, each=8), rep(2, each=6),
rep(3, each=6)),result= c(rep("p",each=3),rep("a",each=3) ,
rep("",each=2),rep("p",each=3),rep("a",each=2),
rep("",each=1),rep("a",each=3), rep("",each=3)),
psitorder= c(rep("Hymenoptera",each=2),rep("Diptera",each=1),
rep("",each=5),rep("Hymenoptera",each=1),rep("Diptera",each=3),
rep("",each=2),rep("",each=6)))
我需要两个独立的数据框,分别针对psit_freq
的每个级别计算每个月子集的寄生百分比psitorder
。
我试过了:
Hymenoptera_output<-
df
filter(psitorder!= "Diptera")%>%
group_by(continuous_month)%>%
summarise(psit_freq = sum(result == "psit")/sum(result==
"adult",result == "psit"))
Diptera_output<-
df
filter(psitorder!= "Hymenoptera")%>%
group_by(continuous_month)%>%
summarise(psit_freq = sum(result == "psit")/sum(result==
"adult",result == "psit"))
我没有得到正确的输出。输出不包括正确计算psit_freq
所需的非膜翅目或双翅目数据。
我需要输出显示如下:
Hymenoptera_output<- data.frame(month= c(1,2,3), psit_freq= c(2/6,
1/5, 0))
Diptera_output<- data.frame(month= c(1,2,3), psit_freq= c(1/6,
3/5, 0))
Hymenoptera_output
# month psit_freq
#1 1 0.3333333
#2 2 0.2000000
#3 3 0.0000000
Diptera_output
# month psit_freq
#1 1 0.1666667
#2 2 0.6000000
#3 3 0.0000000
答案 0 :(得分:1)
似乎你需要:
df %>%
group_by(month) %>%
summarise(hym_freq = sum(psitorder == 'Hymenoptera')/sum(result %in% c('p', 'a')),
dip_freq = sum(psitorder == 'Diptera')/sum(result %in% c('p', 'a')))
# A tibble: 3 x 3
# month hym_freq dip_freq
# <dbl> <dbl> <dbl>
#1 1 0.3333333 0.1666667
#2 2 0.2000000 0.6000000
#3 3 0.0000000 0.0000000