带dplyr的函数图

带dplyr的函数图,r,function,ggplot2,dplyr,R,Function,Ggplot2,Dplyr,我想创建一个带有图形的函数 我的数据集是这样的: Age NAP 17 0,282 18 0,8282 19 0,223 年龄是函数中的变量Var plot_stats_freq_continu <- function(df, Var , y = NAP) { df$sinistres <- rep(1,nrow(df)) data_graph <- df %>% group_by(!! Var)%>% summ

我想创建一个带有图形的函数

我的数据集是这样的:

Age   NAP
17    0,282
18    0,8282
19    0,223
年龄是函数中的变量Var

plot_stats_freq_continu <- function(df,  Var , y = NAP)
{

  df$sinistres <- rep(1,nrow(df))
  data_graph <- df %>% 
    group_by(!! Var)%>%
    summarise(Annee_police = sum(NAP), Nb_sinistres= sum(sinistres)) %>%  
    mutate(Fréquence = mean((Nb_sinistres/Annee_police)))     

  ndata_graph <-  as.data.frame(data_graph)
  p <- ggplot(data=data_graph, aes(x=Var)) +geom_density() +geom_point(data=data_graph, aes(x=Var, y= Fréquence))
  plot(p)
}
plot\u stats\u freq\u continue%
突变(频率=平均值((Nb_sinistres/Anne_police)))

数据图表这是您的数据的问题。我根据您提供的数据运行了您的代码(但我从数字中删除了
),您的代码运行良好。除非您提供示例数据和可复制的示例,否则我们无法帮助您

我猜这与这一块有关:

  data_graph <- df %>% 
    group_by(!! Var)%>%
    summarise(Annee_police = sum(NAP), Nb_sinistres= sum(sinistres)) %>%  
    mutate(Fréquence = mean((Nb_sinistres/Annee_police)))
数据图%
分组依据(!!Var)%>%
总结(Annee_police=sum(NAP),Nb_sinistres=sum(sinistres))%>%
突变(频率=平均值((Nb_sinistres/Anne_police)))
上述代码中的计算可能产生比您的数据短的
Fréquence
(错误状态为23)。我猜这段代码正在悄悄地出错并生成一个空的data.frame。此外,这一行:

nda\u图形您可以尝试

plot_stats_freq_continu <- function(df,  Var){
  Var <- enquo(Var)
   df %>% 
    mutate(sinistres = 1) %>% 
    group_by(!!Var) %>%
    summarise(Annee_police = sum(NAP), Nb_sinistres= sum(sinistres)) %>%  
    mutate(Fréquence = mean((Nb_sinistres/Annee_police))) %>% 
  ggplot(aes_q(Var)) + 
    geom_density()+
    geom_point(aes_q(Var, quote(Fréquence)))
}

plot_stats_freq_continu(d, Age)
plot\u stats\u freq\u continue%
分组依据(!!Var)%>%
总结(Annee_police=sum(NAP),Nb_sinistres=sum(sinistres))%>%
突变(频率=平均值((Nb_sinistres/Anne_police))%>%
ggplot(aes_q(Var))+
几何密度()+
几何点(aes_q(Var,quote(Fréquence)))
}
绘图-统计-频率-连续(d,年龄)


问题是ggplot无法识别
Var
。使用
substitute
解决了此问题

你能提供一些数据来轻松测试你的功能吗?复制到?@Jimbou是的!!sorry@Naï编辑了我的答案,直到最后才使用管道。如果你对它感到满意,请考虑接受这个答案。