Der folgende Code funktioniert wie erwartet. Ich führe bis einschließlich der Linie head(1)
, ich finde, dass JFK nach LAX ist die Route mit den meisten Flügen. Dann verwende ich inner_join
, um die flights
Tabelle zu filtern, um nur Flüge auf dieser Route einzuschließen. Das gibt mir 11.252 Zeilen.Ersetzen Sie inner_join durch semi_join
library(nycflights13)
library(dplyr)
flights %>%
group_by(origin, dest) %>%
summarize(num_flights=n()) %>%
arrange(-num_flights) %>%
head(1) %>% # JFK to LAX has the most flights
select(origin, dest) %>%
inner_join(flights, by=c("origin", "dest"))
Wie kann ich stattdessen semi_join
verwenden, um das gleiche Ziel zu erreichen? Ich möchte eine einzelne Codezeile wie oben verwenden, anstatt eine temporäre Variable zu verwenden. Wenn ich es jedoch mit einer Temp-Variable schreiben würde, würde es so aussehen. Es gibt das gleiche Ergebnis:
filterList <- flights %>%
group_by(origin, dest) %>%
summarize(num_flights=n()) %>%
arrange(-num_flights) %>%
head(1) %>%
select(origin, dest)
semi_join(flights, filterList, by=c("origin", "dest"))
Ich mag würde die Logik ähnlich so halten, dass ich zuerst die Filter bestimmen und dann anzuwenden. Ich denke, ich würde an einer right_semi_join
Funktion interessiert sein, aber das existiert nicht.
Dank kommen mit! Jetzt, da ich weiß, dass es existiert, wird es viel einfacher sein, über mögliche Anwendungen dafür zu lesen! https://stackoverflow.com/questions/35272457/what-does-the-dplyr-period-character-reference – Bobby