Есть ли способ отфильтровать фрейм данных, чтобы сохранить значения, совпадающие со значениями в другом фрейме данных? - PullRequest
0 голосов
/ 23 февраля 2020

Здесь у меня есть фрейм данных df2, имеющий три значения в столбце B. Я хочу отфильтровать df1 $ B, сохранив только те значения, которые соответствуют df2 $ B.

df2 <- structure(list(A = 1:3, B = c(20L, 7L, 52L)), class = "data.frame", 
row.names = c(NA, 
-3L))

df1 <- structure(list(A = 1:6, B = c(15L, 20L, 13L, 7L, 52L, 78L)), class = 
"data.frame", row.names = c(NA, 
-6L))

1 Ответ

2 голосов
/ 23 февраля 2020

В r base вы можете написать:

df1[df1$B %in% df2$B,]

  A  B
2 2 20
4 4  7
5 5 52

Используя пакет dplyr, вы можете использовать filter:

library(dplyr)
df1 %>% filter( B %in% df2$B)

  A  B
1 2 20
2 4  7
3 5 52

You также можно сделать left_join:

library(dplyr)
left_join(df2, df1, by = "B")

  A.x  B A.y
1   1 20   2
2   2  7   4
3   3 52   5

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...