Wybierz wiersze z ramki danych na podstawie wartości w wektorze
Mam dane podobne do tego:
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))
Chcę wybrać wiersze z tej ramki danych na podstawie wartości wfct
zmienna. Na przykład, jeśli chcę wybrać wiersze zawierające „a” lub „c”, mogę to zrobić:
dt[dt$fct == 'a' | dt$fct == 'c', ]
co daje
1 a 2
3 c 3
5 c 5
7 a 7
9 c 9
10 a 1
12 c 2
14 c 4
zgodnie z oczekiwaniami. Ale moje rzeczywiste dane są bardziej złożone i faktycznie chcę wybierać wiersze na podstawie wartości w wektorze, takich jak
vc <- c('a', 'c')
Więc spróbowałem
dt[dt$fct == vc, ]
ale oczywiście to nie działa. Wiem, że mógłbym zakodować coś, aby przejść przez wektor i wyciągnąć potrzebne wiersze i dodać je do nowej ramki danych, ale miałem nadzieję, że będzie bardziej elegancki.
Jak więc mogę filtrować / zestawiać moje dane na podstawie zawartości wektoravc
?