Geben Sie verschiedene Arten von fehlenden Werten (NAs) an.

Ich bin daran interessiert, Arten von fehlenden Werten anzugeben. Ich habe Daten mit unterschiedlichen Fehlertypen und versuche, diese Werte in R als fehlend zu codieren. Ich suche jedoch nach einer Lösung, bei der ich immer noch zwischen ihnen unterscheiden kann.

Angenommen, ich habe einige Daten, die so aussehen,

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

Wenn ich jetzt zwei Tabellen zu meinen fehlenden Werten mache ("Don't know/Not sure","Unknown","Refused" und77, 88, 99) sind als reguläre Daten enthalten,

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

und

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

Ich kodiere jetzt die drei Faktorstufen neu"Don't know/Not sure","Unknown","Refused" in<NA>

is.na(df[,c("a")]) <- df[,c("a")]=="Don't know/Not sure"|df[,c("a")]=="Unknown"|df[,c("a")]=="Refused"

und entfernen Sie die leeren Ebenen

df$a <- factor(df$a) 

und das gleiche geschieht mit den numerischen Werten77, 88, und99

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

Nun werden die fehlenden Kategorien neu kodiertNA aber sie sind alle zusammengewürfelt. Gibt es eine Möglichkeit in a etwas als fehlend zu dekodieren, aber die beizubehaltenOriginal Werte? Ich möchte, dass R den Faden zieht"Don't know/Not sure","Unknown","Refused" und77, 88, 99 als fehlend, aber ich möchte in der Lage sein, die Informationen in der Variablen noch zu haben.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage