если имя переменной в столбце фрейма данных совпадает с именами в переменной переименования вектора - PullRequest
1 голос
/ 26 мая 2020

Учитывая фрейм данных и вектор

set.seed(123)

feature <- sample(LETTERS,30,replace = T)
number<-sample(1:100,30, replace = T)
df<-data.frame(feature,number)

rename<-c("N","V","C","E")

Я хочу просканировать df$feature, и если буква, хранящаяся в rename, совпадает с буквой в столбце df$feature, я хочу переименовать их в "other".

Я совершенно уверен, что на этот вопрос, должно быть, уже где-то ответили, хотя я искал довольно долго.

Ответы [ 2 ]

3 голосов
/ 26 мая 2020

Вы можете использовать %in%, чтобы найти строки, содержащие rename:

df$feature[df$feature %in% rename] <- "other"

В случае, если df$feature является factor и не содержит other на нужных вам уровнях чтобы добавить other к уровням, прежде чем вы замените их на:

levels(df$feature) <- unique(c(levels(df$feature), "other"))

или вы добавите его к character с помощью:

df$feature <- as.character(df$feature)
1 голос
/ 26 мая 2020

Один вариант с использованием dplyr:

df %>%
  mutate(feature = str_replace(feature, paste(rename, collapse = "|"), "other"))
...