Заменить неизвестные значения в factor

#r #dataframe #dataset #missing-data

#r #фрейм данных #набор данных #отсутствует-данные

Вопрос:

Я искал, как заменить в моем наборе данных отсутствующие значения, которые отсортированы по «неизвестным». все неизвестные значения находятся в столбцах факторов.. например, у меня есть семейное положение с атрибутами женат, разведен и неизвестен.. Я ищу способ, как заменить «неизвестный», чтобы не удалять .. другие факторы только да, нет, неизвестны.

 bank$marital <- factor(c('married','divorced','married','unknown','single'))
 

я хочу только заменить «unknown», например, на «single»

 bank$marital = bank$marital.fillna(bank$marital.mode[yes],inplace = True)

bank$marital[is.na(bank$marital)]<-mean(bank$marital,na.rm=TRUE)
 

Я не могу использовать mean, потому что его factor …
Но я не смог найти правильный способ замены «неизвестных» значений в факторах

Комментарии:

1. Очевидно, что нет среднего значения c («женат», «разведен», «женат», «неизвестен», «холост»). Вы должны выбрать, на какое значение вы хотели бы заменить NA. Я предполагаю, что «неизвестный» был бы правильным выбором. Итак bank$marital[is.na(bank$marital)] <- "unknown") ?

2. У меня нет значений NA.. Значения NA сохраняются как «неизвестные», и мне нужно заменить «неизвестные» значения, например, на «x»

Ответ №1:

Это?

Смотрите здесь .

 bank <- data.frame(marital = as.factor(c('married','divorced','married','unknown','single')))

levels(bank$marital) <- c(levels(bank$marital), "x")    # add new level

bank$marital[ bank$marital == "unknown" ] <- "x"

bank$marital
#> [1] married  divorced married  x        single  
#> Levels: divorced married single unknown x
 

Создано 2021-01-29 пакетом reprex (версия 0.3.0)

Комментарии:

1. Да, это. Спасибо

2. Существует ли какая-либо функция, подобная «среднему» в числовых атрибутах, которая могла бы помочь разделить «неизвестные» значения на женатые, разведенные, одинокие?

3. Я думаю, вам нужно будет сделать это «вручную» либо путем случайного присвоения одного из этих значений, либо путем определения количества значений для замены, а затем выбора «правильного» распределения.

Ответ №2:

Вы имеете в виду что-то вроде приведенного ниже?

 f <- type.convert(f, as.is = TRUE)
replace(f,is.na(f),mean(f,na.rm = TRUE))
# [1] 1.000 2.775 4.000 3.000 3.100 2.775
 

Фиктивные данные

 f <- factor(c(1,NA,4,3,3.1,NA))
 

Комментарии:

1. Я не могу опубликовать фотографию, но. ctrlv.link/dlhO это то, какие значения находятся, например, в столбце о браке. значения NA нет, потому что оно отсортировано по неизвестному значению. И я хочу заменить «неизвестное» значение, например, на «женатый»