Мне интересно указать типы пропущенных значений. У меня есть данные, которые имеют разные типы отсутствующих, и я пытаюсь закодировать эти значения как отсутствующие в R, но я ищу решение, при котором я все еще могу различать их.
Скажем, у меня есть данные, которые выглядят так,
set.seed(667)
df <- data.frame(a = sample(c("Don't know/Not sure","Unknown","Refused","Blue", "Red", "Green"), 20, rep=TRUE), b = sample(c(1, 2, 3, 77, 88, 99), 10, rep=TRUE), f = round(rnorm(n=10, mean=.90, sd=.08), digits = 2), g = sample(c("C","M","Y","K"), 10, rep=TRUE) ); df
# a b f g
# 1 Unknown 2 0.78 M
# 2 Refused 2 0.87 M
# 3 Red 77 0.82 Y
# 4 Red 99 0.78 Y
# 5 Green 77 0.97 M
# 6 Green 3 0.99 K
# 7 Red 3 0.99 Y
# 8 Green 88 0.84 C
# 9 Unknown 99 1.08 M
# 10 Refused 99 0.81 C
# 11 Blue 2 0.78 M
# 12 Green 2 0.87 M
# 13 Blue 77 0.82 Y
# 14 Don't know/Not sure 99 0.78 Y
# 15 Unknown 77 0.97 M
# 16 Refused 3 0.99 K
# 17 Blue 3 0.99 Y
# 18 Green 88 0.84 C
# 19 Refused 99 1.08 M
# 20 Red 99 0.81 C
Если я сейчас сделаю две таблицы, мои недостающие значения ("Don't know/Not sure","Unknown","Refused"
и 77, 88, 99
) будут включены как обычные данные,
table(df$a,df$g)
# C K M Y
# Blue 0 0 1 2
# Don't know/Not sure 0 0 0 1
# Green 2 1 2 0
# Red 1 0 0 3
# Refused 1 1 2 0
# Unknown 0 0 3 0
а также
table(df$b,df$g)
# C K M Y
# 2 0 0 4 0
# 3 0 2 0 2
# 77 0 0 2 2
# 88 2 0 0 0
# 99 2 0 2 2
Теперь я перекодирую три уровня факторов "Don't know/Not sure","Unknown","Refused"
в <NA>
is.na(df[,c("a")]) <- df[,c("a")]=="Don't know/Not sure"|df[,c("a")]=="Unknown"|df[,c("a")]=="Refused"
и удалите пустые уровни
df$a <- factor(df$a)
и то же самое с числовыми значениями 77, 88,
и 99
is.na(df) <- df=="77"|df=="88"|df=="99"
table(df$a, df$g, useNA = "always")
# C K M Y <NA>
# Blue 0 0 1 2 0
# Green 2 1 2 0 0
# Red 1 0 0 3 0
# <NA> 1 1 5 1 0
table(df$b,df$g, useNA = "always")
# C K M Y <NA>
# 2 0 0 4 0 0
# 3 0 2 0 2 0
# <NA> 4 0 4 4 0
Теперь недостающие категории перекодированы в NA
, но все они собраны вместе. Есть ли способ перекодировать что-то как отсутствующее, но сохранить исходные значения? Я хочу, чтобы R передавал "Don't know/Not sure","Unknown","Refused"
и 77, 88, 99
как отсутствующие, но я хочу, чтобы информация в переменной по-прежнему оставалась.
df
с именемisNA
, который будет оставаться верным, если значение отсутствует? или столбецisNA
может содержать непосредственноNA
и0
. Это зависит от остальной части вашего кода. - person Nishanth   schedule 18.04.2013my.table
, который используетmy.is.na
, который возвращаетTRUE
для "Не знаю / Не уверен", "Неизвестно", "Отказано" - person Nishanth   schedule 18.04.2013a
, но помимо этого данные, которые я предоставил в вопросе, довольно близки к тому, как выглядят мои настоящие данные. - person Eric Fail   schedule 23.04.2013