Как удалить десятичные точки из столбца данных? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть .csv фрейм данных, в котором один из столбцов является кодом ZIP.Код ZIP является фактором.Вот пример:

Country<- c("US","US","US","CAN","CAN")
ZIP<- C(00210,01210,65483.0,H3P,H3P3C)
data<- data.frame(Country,ZIP)

Я сделал следующее, но вывод не то, что я хочу:

data$ZIP<-round(as.numeric(as.character(data$ZIP)), 0) 

Хотя он удалил десятичные дроби, но теперь почтовый индекс 00210,01210 стало 210 и 1210.Кроме того, zip коды для CANADA стали NA.Я хочу сохранить zip кодовые цифры до 5 цифры и сохранить zip коды CANADA.

Как я могу это сделать?

Спасибо.

1 Ответ

1 голос
/ 22 сентября 2019

Попробуйте это

data$ZIP <- sub("\\.\\d+$", "", data$ZIP)

#       Country   ZIP
# 1      US 00210
# 2      US 01210
# 3      US 65483
# 4     CAN   H3P
# 5     CAN H3P3C

Пояснение

На странице справки типичное использование sub составляет

sub(pattern, replacement, x)

x - это символьный вектор, в котором ищутся совпадения ...

В нашем случае x будет столбцом ZIP (значения столбца ZIP должны быть конкретными).

Шаблон ("\\.\\d+$"):

\\. соответствует dot

\\d+ соответствует одному или нескольким числовым символам

$ соответствует концу входной строки.

Шаблон замены - "".Он заменяет числовые символы, начиная с совпадения точки до конца, пустой строкой.

Например

sub("\\.\\d+$", "", 21358.222)
# "21358"

Надеюсь, это поможет.

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