Удалить строки, когда элемент соответствует списку - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть набор данных, который выглядит следующим образом:

Col1 Col2
0.7   AA
0.6   BBB
0.2   RR
0.8   TTT
0.0   SS

И еще один набор данных, который выглядит так

List
BBB
RR
TTT

Я хочу удалить строки из первого набора данных, когда значения изВторой столбец не соответствует ни одному из имен, перечисленных во втором наборе данных.Конечный продукт будет выглядеть так:

Col1 Col2
0.6   BBB
0.2   RR
0.8   TTT

Я не могу найти простой способ запустить это в R. Я пробовал разные циклы for и if, но не работал.Кто-нибудь знает простое решение?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Использование data.table:

dt <- data.table(Col1 = c(0.7, 0.6, 0.2, 0.8, 0), Col2 = c("AA", "BBB", "RR", "TTT", "SS"))
myList <- list("BBB", "RR", "TTT")

dt[Col2 %in% myList]

Дает вам:

   Col1 Col2
1:  0.6  BBB
2:  0.2   RR
3:  0.8  TTT
0 голосов
/ 19 декабря 2018

База R Решение:

Набор данных:

df1=read.table(text="Col1 Col2
          0.7   AA
          0.6   BBB
          0.2   RR
          0.8   TTT
          0.0   SS",header=T)
 df2=read.table(text="List
           BBB
           RR
           TTT",header=T)

Код:

df1[df1$Col2 %in% df2$List,]

Выход:

  Col1 Col2
2  0.6  BBB
3  0.2   RR
4  0.8  TTT
...