Используя R, как я могу узнать, содержится ли какое-либо слово из списка слов в группе столбцов? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть набор данных, в котором я хочу посмотреть, есть ли одно или несколько слов в списке в нескольких столбцах.

zoo <- matrix (c("zoo1", "bee", "honeybee", "alligator", "tiger", 0,  
             "zoo2", "tiger", "honeybee", "lion", 0, 0,
             "zoo3", "alligator", "alligator", "alligator", 
           "bee", "wasp", "zoo4", "wasp", "honeybee", 0, 0, 0,
           "zoo5", "alligator", "lion", "tiger", "bear", 0), 
           nrow = 5, ncol = 6, byrow = TRUE)
colnames(zoo) <- c("zoo", "A", "B", "C","D","E")

zoo <- data.frame(zoo)

Я хотел бы создать новый столбец, который идентифицирует каждую строку, содержащую ошибку (пчела, пчела или оса).Вот что я попробовал:

#create list of values that would return "TRUE" in the new column
bug <- c("bee", "wasp", "honeybee")

#create list of columns to be included in the search for the list of desired values
animal <- c("A", "B", "C", "D", "E")

#create a new column called "bug" that lists any row with one of the desired values as "TRUE"
zoo$bug <- (rowSums(zoo[,animal] == bug) >0)

Это сработало только частично.Zoo1, Zoo3, zoo4 и zoo5 верны, но zoo2 (строка 2) выглядит как «ЛОЖЬ», когда он должен быть «ИСТИНА».Я не могу понять, почему это так.

Любые предложения будут очень признательны, спасибо!

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете использовать что-то вроде

rowSums(sapply(zoo[,animal], function(x) x %in% bug))

для подсчета ошибок в строках и ...

apply(sapply(zoo[,animal], function(x) x %in% bug), 1, any)

, чтобы увидеть, есть ли ошибки в строке.

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