【发布时间】:2018-11-21 14:30:17
【问题描述】:
我正在尝试在一个函数中使用 dplyr 来创建一个用户定义的函数,我可以传递多个参数来用 dplyr 汇总数据,然后用 ggplot 绘制它。
这是一些示例数据,以及我试图用 dplyr 做的事情然后绘图
df <-data.frame(Year = c("2006", "2006", "2006", "2007", "2007", "2007", "2008", "2009", "2010", "2010", "2009", "2009"), JudicialOrientation = c("Defense", "Plaintiff", "Plaintiff", "Neutral", "Defense", "Plaintiff", "Defense", "Plaintiff", "Neutral", "Neutral", "Plaintiff","Defense"), Loss = c(100000, 100, 2500, 100000, 25000, 0, 7500, 5200, 900, 100, 0, 50))
df1 <- df %>%
group_by(Year, JudicialOrientation) %>%
summarise(MeanLoss =mean(Loss))
ggplot(df1, aes(x = JudicialOrientation, y = MeanLoss, color = Year, group =Year)) +
geom_line() +
geom_point()
我现在正在尝试将其复制到用户函数中,以便我可以传递不同的变量以获得相似的结果。
这是我目前的尝试:
ConsistencyPlot <- function(df,var1,timevar,lossvar){
df1 <- df %>%
group_by_(df[timevar], df[var1]) %>%
summarise_(MeanLoss = mean(df[lossvar]))
ggplot(df1, aes(x = var1, y = MeanLoss, color = timevar, group = timevar)) +
geom_line() +
geom_point()
}
ConsistencyPlot(df,"JudicialOrientation","Year",'Loss')
我正在复制相同的逻辑并传入df 作为我的数据框,var1 作为JudicialOrientation,timevar 作为Year 和lossvar 作为我想要的Loss 值的向量平均通过summarise。但是我不能得到相同的结果,所以我觉得我在闭包中如何使用这些函数时遗漏了一些东西。
【问题讨论】: