Как найти и заменить значения столбца String фрейма данных в R - PullRequest
0 голосов
/ 19 марта 2019

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

введите описание изображения здесь

Содержит некоторые ошибочные данные, например, Данные N, Z, X должны быть заменены на «Другие», а некоторые коды городов должны быть заменены их исходными названиями, например

OC, Okl City --> Oklahoma City
LA --> Los Angles
NW --> New York

Когда я попытался сделать это, используя операторы IF и ELSE IF внутри цикла FOR. Я был очень неудачным.

Будет очень полезно, если кто-то может мне помочь в этом.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Вот воспроизводимый пример с использованием dplyr::case_when(), который можно обобщить для любого числа условий:

library(tidyverse)
d <- tibble(city = c("Oklahoma City","Los Angeles","OC","NY","Z","Z","X","N"))
d <- mutate(d, city = case_when(city %in% c("Z","X","N") ~ "Other", 
                                city == "Oklahoma City"  ~ "OKL",
                                city == "Los Angeles"    ~ "LA",
                                TRUE ~ city))
d


# A tibble: 8 x 1
  city 
  <chr>
1 OKL  
2 LA   
3 OC   
4 NY   
5 Other
6 Other
7 Other
8 Other
0 голосов
/ 20 июня 2019

Использовать можно case when аналогично @Rich выше ответа, но дифференцировать не в состоянии.

library(tidyverse) d <- tibble(city = c("Oklahoma City","Los Angeles","OC","NY","Z","Z","X","N")) d <- mutate(d, city = case_when(!city %in% c("Oklahoma City", "Los Angeles" ) ~ "Other", city == "Oklahoma City" ~ "OKL", city == "Los Angeles" ~ "LA", TRUE ~ city))

0 голосов
/ 19 марта 2019

Используйте переоценку из пакета plyr.

library(plyr)

df$city<-revalue(df$city,c("OC"="Oklahoma City",
                             "Okl City"="Oklahoma City",
                             "LA"="Los Angles",
                             "NW"="New York",
                             "Z"="Others",
                             "X"="Others",
                             "N"="Others"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...