Использование!и% в% операторов - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть переменная factor со странами.Мне нужно использовать операторы ! и %in%, чтобы я мог сохранить "United States", "Switzerland", "United Kingdom" и преобразовать остальные в "Others".Но код, который я использую, не работает

country <- c(rep(x = "United States", 466), rep(x = "United Kingdom", 250), rep(x = "Switzerland", 520), 
             rep(x = "France", 97), rep(x = "Italy", 85), rep(x = "Germant", 39), rep(x = "Canada", 25), 
             rep(x = "Singapore", 2), rep(x = "South Africa", 9))
country

bulk <- c("United States", "Switzerland", "United Kingdom")
if(! bulk %in% country) country <- "Others"

Я ожидаю, что он будет разделен на четыре категории.США, Швейцария, Великобритания, другие.Но я не хочу решение вне контекста "!"и операторы "% in%".

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Try

country[ ! country %in% bulk ] <- "Other"
table(country)
#-------------------------
country
         Other    Switzerland United Kingdom  United States 
           257            520            250            466 

R принимает логические индексы для условных присвоений.

0 голосов
/ 18 февраля 2019
country <- as.data.frame(c(rep(x = "United States", 466), rep(x = "United Kingdom", 250), rep(x = "Switzerland", 520), 
             rep(x = "France", 97), rep(x = "Italy", 85), rep(x = "Germant", 39), rep(x = "Canada", 25), 
             rep(x = "Singapore", 2), rep(x = "South Africa", 9)), stringsAsFactors = F)

colnames(country) <- "country"

bulk <- c("United States", "Switzerland", "United Kingdom")

country$country[!country$country %in% bulk] <- "Other"

unique(country)

            country
1     United States
467  United Kingdom
717     Switzerland
1237          Other
0 голосов
/ 18 февраля 2019

Решение для вектора:

country[!(country %in% bulk)] <- "Others"

Решение для фрейма данных:

df<-data.frame(country=country, emptycolumn=NA)
df$country<-as.character(df$country)
df$country[!(df$country %in% bulk)]<-"Others"
View(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...