Этот вопрос, вероятно, задавался в другом месте, но, поскольку я новичок в R и мой словарный запас ограничен, я не могу его найти.
Если у меня есть заполненный символом фрейм данных,скажем:
c1 <- c("aa", "bb", "cc", "dd", "ee")
c2 <- c("ff", "gg", "hh", "ii", "jj")
c3 <- c("kk", "ll", "mm", "nn", "oo")
c4 <- c("pp", "qq", "rr", "ss", "tt")
c5 <- c("uu", "vv", "ww", "xx", "yy")
df <- cbind.data.frame(c1, c2, c3, c4, c5)
, что приводит к
c1 c2 c3 c4 c5
1 aa ff kk pp uu
2 bb gg ll qq vv
3 cc hh mm rr ww
4 dd ii nn ss xx
5 ee jj oo tt yy
И я хочу выбрать элементы из столбца 4, которые занимают ту же строку, что и несколько элементов из столбца 2 (скажем, «gg»), "ii" и "jj"), есть ли способ сделать это без использования разных команд для каждой?
Например,
df$c4[i = c(2,4,5)]
вернет
[1] qq ss tt
Levels: pp qq rr ss tt
и
df$c4[df$c2 == "gg"]
вернут
[1] qq
Levels: pp qq rr ss tt
, но когда я пытаюсь объединить их с
df$c4[i = c(df$c2=="gg", df$c2=="ii", df$c2=="jj")]
R, кажется, только частичнознать, что делать, возвращая
[1] qq <NA> <NA>
Levels: pp qq rr ss tt