我有一个数据框架,其中每月的数据month关于草食动物寄生result的各种类型的寄生虫秩序'psitorder‘与水平“膜翅目”或“双翅目”。result要么是寄生食草动物的"p“,要么是”如果食草动物长到成年“,或者没有数据”因为食草动物在圈养中死亡“。
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发布于 2017-10-12 23:20:50
看来你需要:
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.0000000https://stackoverflow.com/questions/46720098
复制相似问题