Wie funktioniert dplyr zwischen arbeiten?
Ich habe die Dokumentation gelesen und ich habe versucht zu googeln; es sollte eine einfache Sache, aber es würde scheinen, es ist nicht an mir, so daß ich kühn hingehen und Fragen, ob jemand hier könnte mir erklären, wie dplyr ' s between()
funktioniert.
# Explanation documentation
between(x, left, right)
x A numeric vector of values
left, right: Boundary values
Verstehe ich ein Vektor ist ein eindimensionales array, also vermute ich, dass c(1:7)
ist ein Vektor, richtig? Ich habe versucht, mit dem Beispiel in der Dokumentation als Vorlage für die Suche nach Flügen Juli–september, aber die folgenden nur einen Fehler zurück:
# Example from documentation cont’d
x <- rnorm(1e2)
x[between(x, -1, 1)]
# Loading the library
library(nycflights13)
# Execute my hopeless attempt at between()
flights[between(month, 7, 9)]
# Output and error message
> flights[between(month, 7, 9)]
Error in between(month, 7, 9) : object 'month' not found
Ich fühle mich wirklich dumm Fragen, aber jede Hilfe in dieses Verständnis wird sehr geschätzt werden. Ich würde auch zu entschuldigen bittet nicht eine gut definierte Frage; wie wahrscheinlich ist geschätzt, ich weiß wirklich nicht, wie zu formulieren es andere als 'I don' T get it".
- es ist nicht die Frage, auf zwischen, sondern auf der Definition der Variablen: Ihre filtern Sie Ihre dataframe
flights
indem Sie sagen: "nehmen Sie die Zeile, wo die variable Monat Aufenthalte zwischen 7 und 9". Abermonth
ist nicht definiert, und R sagt es Ihnen. Sie sind eher auf der Suche fürflights[between(flights$month, 7, 9)]
. - Wenn Sie möchten, um R zu verstehen, dass
month
bezieht sich auf die Spalte name, die in den Anwendungsbereich derflights
Sie tun können:with(flights, flights[between(month, 7, 9)])
- R Leute entwickelt haben, die mehrere Konzepte, wie bei base, tidyverse, und Daten.Tabelle. Untergruppen und andere Dinge wirken ein bisschen differenly, die oft verwirrend.
dplyr
und seinebetween()
ist Teil des tidyverse. Die Art und Weise, es zu benutzen am besten ist wohlflights %>% filter(between(month, 7, 9))
oderfilter(flights, between(month, 7, 9))
. Sie versucht, base-R Untergruppen. Dies funktioniert auch (Sie können mischen die Dinge), aber muss die Einstellungen die oben erwähnt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
between
ist nichts besonderes — jede andere Funktion in R geführt hätte das gleiche problem. Deine Verwirrung rührt von der Tatsache, dass dplyr hat eine Menge von Funktionen, mit denen Sie die Arbeit auf die Daten.frame-Spalte-Namen, als wären Sie normale Variablen; zum Beispiel:Jedoch
between
ist nicht eine dieser Funktionen. Wie bereits erwähnt, es ist einfach eine normale Funktion. Also, wenn Sie es verwenden möchten, müssen Sie die Argumente in der üblichen Weise; zum Beispiel:Dieser gibt eine logische Vektor, und jetzt können Sie es verwenden, um einen index Ihrer Daten.Rahmen:
Oder mehr dplyr-wie:
Beachten Sie, dass hier wir jetzt verwenden nicht-standard-Auswertung. Aber die Auswertung wird durchgeführt, indem
filter
, nicht durchbetween
.between
aufgerufen wird (durchfilter
) mit standard-Auswertung.FALSE
)between
ist die Antwort auf die Frage "sind die Werte von X zwischen meine Grenzen?" Also, wenn ich bittenbetween(c(5, 3, 4, 6, 2, 9, 3), 3, 7)
würde ich die Antwort bekommen, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE. Wenn alle Ihre Werte sindFALSE
bedeutet dies, dass keine Monate in derflights
dataset ist zwischen 7 und 9.x > left & x < right
Ich denke, Sie wollen es so:
Sehe ich in der Zwischenzeit diese Lösung erschien auch in den Kommentaren.
filter(Flüge, zwischen(Monat, 7,9)) scheint zu funktionieren nur fine