R-将聚合函数中的平均值转换为百分比



我有一个包含年龄和年份的数据(1991-2008(

我过滤了年龄为1的数据,如果<19和0,如果>19

database$age_cat[database$under19==1] <- "below 19 "
database$age_cat[database$under19==0] <- "above 19 "
percentage <- aggregate(insured~age_cat+year,data = database,mean)
z <- ggplot(data = percentage, mapping =aes(x=year,y=insured,color=age_cat)) + geom_point()
z+ scale_color_manual(values=c("blue", "red"))

我想展示投保年龄组百分比的变化<19和>19年,并以不同的颜色显示每年的每个点。(为了解释我自己,我需要显示每年每个点的百分比(我试着使用ggplot,但它显示了平均值,而不是百分比。有什么建议吗?

我强烈推荐tidyverse。在那套软件包中,我会这样处理你的问题:

library(tidyverse)
percent <-
database %>%
mutate(age_cat = case_when(
under_19 == 1 ~ "below 19",
under_19 == 0 ~ "over 19")) %>%
group_by(year, age_cat) %>%
summarise(count_ = n()) %>%
mutate(percent = count_/sum(count_))
percent %>%
ggplot(aes(x = year, y = percent, color = age_cat)) +
geom_point()

我假设每一行都是您想要计数的一个单独的行,并且您想要该年份/age_cat分组中的行百分比的摘要。您也可以通过count_ = sum(insured)进行总结。请注意,如果预期并需要忽略NA行,则可能需要将na.rm = TRUE参数添加到sum(insured)中。

相关内容

最新更新