Я пытаюсь использовать 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
.Однако я не могу получить те же результаты, поэтому чувствую, что что-то упустил из-за того, как эти функции используются в замыкании.