Использование grepl для подстановки фрейма данных, содержащего одно и то же упоминание некоторого текста в двух столбцах - PullRequest
1 голос
/ 06 мая 2019

Я работаю над фреймом данных (account) с двумя столбцами, содержащими местоположение «проводки» IP (в столбце city) и местоположения в момент первой регистрации этих учетных записей (в столбце register). Я использую grepl() для подмножества строк, чье местоположение и регистр находятся в штате Нью-Йорк (Нью-Йорк). Ниже приведены данные и мой код для поднабора желаемого результата:

account <- data.frame(city = c("Beijing, China", "New York, NY", "Hoboken, NJ", "Los Angeles, CA", "New York, NY", "Bloomington, IN"),
register = c("New York, NY", "New York, NY", "Wilwaukee, WI", "Rochester, NY", "New York, NY", "Tokyo, Japan"))

sub_data <- subset(account, grepl("NY", city) == "NY" & grepl("NY", register) == "NY")

sub_data
[1] city     register
<0 rows> (or 0-length row.names)

Мой код не работал и вернул 0 строк (хотя по крайней мере две строки должны были соответствовать моему критерию выбора). Что пошло не так в моем коде? Я ссылался на эту предыдущую тему , прежде чем задавать этот вопрос.

1 Ответ

1 голос
/ 06 мая 2019

Функция grepl уже возвращает логический вектор, поэтому просто используйте следующее:

sub_data <- subset(account, 
                   grepl("NY", city) & grepl("NY", register)
                   )

Используя что-то вроде grepl("NY", city) == "NY", вы спрашиваете R, равны ли какие-либо значения в FALSE TRUE FALSE FALSE TRUE FALSE "NY", что, конечно, ложно.

...