Ich versuche eine Spalte für meine Datenmenge zu codieren, wenn es mehr als eine Ebene gibt, nachdem die Daten durch einige Faktoren gruppiert wurden. Der Einfachheit halber verwende ich den Datensatz mtcars als Beispiel. Ich bekomme immer den Fehler "Fehler: Filterbedingung wird nicht zu einem logischen Vektor ausgewertet."Verwenden von Dplyr zum Codieren mehrerer Ebenen innerhalb einer Gruppe
Klar ist diese Syntax nicht akzeptabel, aber hat jemand einen clevereren Weg, dies zu tun?
df_levels <- mtcars %>%
group_by(mpg) %>%
filter(nlevels(.$gear) > 1) %>%
mutate(Levels = 1) ##encode with a boolean value indicating more than one level
und
df_levels <- df_levels %>%
group_by(mpg) %>%
filter(nlevels(.$gear) < 1) %>%
mutate(Levels = 0)
Also, wenn Sie auf den neuen df "df_levels" klicken, und sortieren nach mpg in der df viewer, würden Sie eine Spalte "Ebenen" = 0 für Einträge mit 10,4 sehen mpg (weil es nur Daten mit gear = 3 gibt) und die Spalte "levels", die mit 30,4 mpg verknüpft sind, hätte den Wert = 1, da es mehr als eine Ebene für den Gang in dieser Datengruppierung gibt (gear = 4, gear = 5) .
str (mtcars $ Gang) num [01.32] 4 4 4 3 3 3 3 4 tun könnten 4 4 ... – Gopala