Я хотел бы изменить значения в указанном столбце c в одно значение в R - PullRequest
1 голос
/ 13 апреля 2020

Image Here

Как преобразовать значения, которые не равны "Амстердам", "Берлин", "Эдинбург", "Стокгольм" или "Амстердам-Зуидост", в одно значение, называемое "Другое" Города "? Мои данные называются жилищные данные, моя переменная называется "Город".

Ответы [ 4 ]

1 голос
/ 13 апреля 2020

Если вы хотите использовать решение dplyr, вы можете использовать mutate() и case_when:

library(tidyverse)

housingdata <-
  data.frame(
  stringsAsFactors = FALSE,
                ID = c(1L, 2L, 3L, 4L, 5L, 6L, 7L),
              City = c("Amsterdam","Berlin",
                       "Edinburgh","Stockholm","Amsterdam-Zuidoost","Chicago",
                       "Seattle")
)

housingdata_m <-
  housingdata %>% 
  mutate(Category = case_when(City %in% c("Amsterdam", "Berlin", "Edinburgh", "Stockholm", "Amsterdam-Zuidoost") ~ City,
                                          TRUE ~ "Other Cities"))
1 голос
/ 13 апреля 2020

Мы можем использовать %in% со списком значений для проверки:

cities <- c("Amsterdam", "Berlin", "Edinburgh", "Stockholm", "Amsterdam-Zuidoost")
housingdata$City[!housingdata$City %in% cities] <- 'Other Cities'

Другие опции включают в себя:

transform(housingdata, City = replace(City, !City %in% cities, 'Other Cities'))

Или используя dplyr:

library(dplyr)
housingdata %>% mutate(City = if_else(City %in% cities, City, 'Other Cities'))

и

housingdata %>%
   mutate(City = case_when(City %in% cities~ City, 
                          TRUE ~'Other Cities'))
0 голосов
/ 13 апреля 2020

Я подозреваю, что ОП действительно хочет сделать summarize.

library(dplyr)
targetcountries <- c("Amsterdam","Berlin","Edinburgh","Stockholm","Amsterdam-Zuidoost")
housingdata %>%
  mutate(Country = case_when(Country %in% targetcountries ~ Country,
                             TRUE ~ "Other")) %>% 
  group_by(Country) %>%
  summarize(Value = sum(Value))
0 голосов
/ 13 апреля 2020

Опция, использующая dplyr, будет выглядеть следующим образом:

library(dplyr)
housingdata %>% 
  mutate(City = if_else(!City %in% c("Amsterdam", "Berlin", "Edinburgh", 
                                         "Stockholm", "Amsterdam-Zuidoost"), 'Other Cities', City)

Конечно, вы можете создать новую переменную или перезаписать существующую переменную City, как в моем примере.

...