Как исправить, если еще выводится с точки зрения присвоения NA неизвестным - PullRequest
0 голосов
/ 25 сентября 2019

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

str(df$Var)
Factor w/ 4 levels "Current smoker",..: NA NA NA NA NA NA NA 

df$Var<- ifelse(is.na(df$Var),"unknown",df$Var)

После того, как я запустил код, строка была изменена

str(df$Var
chr [1:100] "unknown" "1" "1"

Есть ли способ, которым я могу назначить NA "неизвестным", не меняя имена переменных на "1", "2", "3"

Я надеюсь, что мой вопрос ясен

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Просто используйте функцию: as.character() в столбце вашего фрейма данных.

df$Var <- as.character(df$Var)

Пример:

factors <- as.factor(c(NA, NA, NA, NA, 100, 40, "Allo"))`
factors <- as.character(factors)
factors <- ifelse(is.na(factors),"unknown",factors)

Вывод:

"unknown" "unknown" "unknown" "unknown" "100"     "40"      "Allo" 

Причина, по которой вы получаете 1, 2, 3, etc, заключается в том, что у вас есть факторы, вы должны преобразовать их в characters перед применением функции.

0 голосов
/ 25 сентября 2019

Другая опция для преобразования этого значения, sans ifelse (), использует

factors$Var[is.na(factors$Var)] <- "unknown"

Вам все равно нужно будет преобразовать переменную в символ.R присваивает числовые значения факторным уровням, и поэтому прямое преобразование превратит эти уровни в связанное числовое значение, а не числовое значение.

Пример:

factors <- data.frame(Id = seq(1,7), 
                        Var = as.factor(c(NA, NA, NA, NA, 100, 40, "Allo")))

factors$Var <- as.character(factors$Var)

factors$Var[is.na(factors$Var)] <- "unknown"

С выводомфрейм данных выглядит так:

  Id     Var
1  1 unknown
2  2 unknown
3  3 unknown
4  4 unknown
5  5     100
6  6      40
7  7    Allo
...