Wie kann ich eine Funktion machen, die eine Spalte nimmt und diese in dplyr, tidyr und ggplot verwendet?Funktion mit dplyr, tidyr und ggplot
df <- data.frame(date_col = c(1,1,2,2,3,4,4,5,5),
col_a = c('a','b','a','b','a','a','b','a','b'),
val_col = runif(9))
Wie kann ich eine Funktion schreiben, einen Parameter param_col
statt der fest codierten col_a
df %>%
group_by(date_col, col_a) %>%
summarise(val_col = sum(val_col)) %>%
complete(col_a, date_col) %>%
ggplot(aes(date_col, val_col, color = col_a)) +
geom_line()
Die dplyr und ggplot Anrufe im Code arbeiten im Folgenden erläutert. Aber wie sollte der complete
Aufruf geschrieben werden? Oder sollte complete_
verwendet werden?
Gibt es eine kanonische Methode, dies zu tun?
plot_nice_chart <- function(df, param_col) {
enq_param_col <- enquo(param_col)
str_param_col <- deparse(substitute(param_col))
# aggregate data based on group_by_col,
# explicitly fill in NA's for missing to avoid interpolation
df %>%
group_by(!!enq_param_col, date_col) %>%
summarise(val_col = sum(val_col)) %>%
complete(<what-should-be-here?>, date_col) %>%
ggplot(aes_string("date_col", "val_col", color = str_param_col)) +
geom_line()
}
Können Sie einige Beispieldaten angeben? – Jimbou
Es sieht nicht so aus, als würden Sie Funktionsargumente an "complete" übergeben, also scheint es so zu sein, dass die Dinge so funktionieren sollten wie sie sind. Funktioniert die Funktion nicht? – aosmith
Was sollte Ersetzt werden, um fehlende Ebenen in der Kombination von group_by_col und date_col zu vervollständigen –
Rickard