Оставьте только числовые записи пустыми - PullRequest
0 голосов
/ 08 октября 2018

У меня есть датафрейм с британскими почтовыми индексами.К сожалению, некоторые данные почтового индекса неверны - то есть они являются только числовыми (все британские почтовые индексы должны начинаться с алфавитного символа)

Я провел некоторое исследование и нашел команду grepl, которую использовал для генерацииTRUE / FALSE вектор, если запись только числовая,

Data$NewPostCode <- grepl("^.*[0-9]+[A-Za-z]+.*$|.*[A-Za-z]+[0-9]+.*$",Data$PostCode)

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

Примечание,Я не хочу удалять строки с неправильным почтовым индексом, так как я потеряю информацию из других переменных.Я просто хочу удалить этот почтовый индекс

Пример данных

Area               Postcode
Birmingham         B1 1AA
Manchester         M1 2BB
Bristol            BS1 1LM
Southampton        1254
London             1290C
Newcastle          N1 3DC

Желаемый вывод

Area               Postcode
Birmingham         B1 1AA
Manchester         M1 2BB
Bristol            BS1 1LM
Southampton        
London             
Newcastle          N1 3DC

1 Ответ

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

Существует несколько способов выбора между векторами ИСТИНА / ЛОЖЬ и видом задачи, которую вы хотите, но я предпочитаю ifelse.Более простой способ создать тип логического вектора, который вы ищете, это

grepl("^[0-9]", Data$PostCode)

, который будет ИСТИНА всякий раз, когда PostCode начинается с числа, и ЛОЖЬ в противном случае.Вам может потребоваться настроить регулярное выражение, если ваши потребности более сложны.

Затем вы можете определить новый столбец, который будет пустым, если вектор равен TRUE, и старым значением, если вектор равен FALSE, следующим образом:

Data$NewPostCode <- ifelse(grepl("^[0-9]", Data$PostCode), "", Data$PostCode)

(Могу ли я предложить использовать NA вместо пробела?)

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