Ich habe ähnliche Daten:
dt <- structure(list(fct = structure(c(1L, 2L, 3L, 4L, 3L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 2L, 3L, 4L), .Label = c("a", "b", "c", "d"), class = "factor"), X = c(2L, 4L, 3L, 2L, 5L, 4L, 7L, 2L, 9L, 1L, 4L, 2L, 5L, 4L, 2L)), .Names = c("fct", "X"), class = "data.frame", row.names = c(NA, -15L))
Ich möchte Zeilen aus diesem Datenrahmen basierend auf den Werten in der fct
Variablen auswählen . Wenn ich beispielsweise Zeilen auswählen möchte, die entweder "a" oder "c" enthalten, kann ich Folgendes tun:
dt[dt$fct == 'a' | dt$fct == 'c', ]
was ergibt
1 a 2
3 c 3
5 c 5
7 a 7
9 c 9
10 a 1
12 c 2
14 c 4
wie erwartet. Aber meine tatsächlichen Daten sind komplexer und ich möchte tatsächlich Zeilen basierend auf den Werten in einem Vektor wie z
vc <- c('a', 'c')
Also habe ich es versucht
dt[dt$fct == vc, ]
aber das funktioniert natürlich nicht. Ich wusste, dass ich etwas codieren konnte, um den Vektor zu durchlaufen, die benötigten Zeilen herauszuziehen und sie an einen neuen Datenrahmen anzuhängen, aber ich hatte gehofft, dass es einen eleganteren Weg gibt.
Wie kann ich meine Daten basierend auf dem Inhalt des Vektors filtern / unterteilen vc
?
dt[dt$fct %in% vc,]
Grundsätzlich==
gilt dies für einen Artikel und%in%
für einen Vektorvergleich.