2017-10-05 2 views
-2

Ich möchte prozentual -Werte in einem Datenrahmen und für Variablen berechnen.Prozentuale Werte für Na-Werte (Datenrahmen und Variablen) auf R

Mein Datenrahmen hat dies:

mean(is.na(dataframe)) 
# 0.03354 

Wie ich dieses Ergebnis zu lesen? Na 0,033%? Ich verstehe nicht.

Für die einzelnen Variablen habe ich die folgenden für die Zählung von NA s

sapply(DATAFRAME, function(x) sum(is.na(x))) 

Dann für den Prozentsatz der NA -Werten:

colMeans(is.na(VARIABLEX)) 

funktioniert nicht, weil ich das bekommen Folgefehler:

"x must be an array of at least two dimension"

Warum tritt dieser Fehler auf? du? Wie auch immer, danach habe ich versucht, die folgenden:

mean(is.na(VariableX)) 
# 0.1188 

Sollte ich interpretieren dies 0,11% NA -Werten haben?

+0

Willkommen bei SO! Bitte lesen [ask] und https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example und [mcve] ... dann bearbeiten Sie Ihre Frage! – jogo

Antwort

0

Ich würde nur die Anzahl der Zeilen teilen NAs durch die Gesamtanzahl der Zeilen enthalten:

df <- data.frame(data = c(NA, NA, NA, NA, 2, 4, NA, 7, NA)) 

percent_NA <- NROW(df[is.na(df$data),])/NROW(df) 

Welche gibt:

> percent_NA 
[1] 0.6666667 

, die es in sind 66,67% NAs bedeutet

meine Datenrahmen

0

Ich verstehe nicht das Problem, das Sie versuchen zu lösen. Alles funktioniert wie erwartet.
Zuerst ein Datensatz, da Sie noch keinen erstellt haben.

set.seed(6180) # make it reproducible 
dat <- data.frame(x = sample(c(1:4, NA), 100, TRUE), 
        y = sample(c(1:5, NA), 100, TRUE)) 

Jetzt der Code für Summen.

s <- sapply(dat, function(x) sum(is.na(x))) 
s 
# x y 
#18 13 
sum(s) 
#[1] 31 
sum(is.na(dat)) 
#[1] 31 

colSums(is.na(dat)) 
# x y 
#18 13 

Das gleiche gilt für Mittel, es mean oder colMeans sein.
BEARBEITEN.
Hier ist der Code, um die NA Werte pro Spalte/Variable und eine Gesamtsumme zu erhalten.

sapply(dat, function(x) mean(is.na(x))) 
# x y 
#0.18 0.13 
colMeans(is.na(dat)) # Same result, faster 
# x y 
#0.18 0.13 
mean(is.na(dat))  # overall mean 
#[1] 0.155 
+0

Ich würde Na Werte Datenrahmen und Variablen Prozent. Ich habe Dataframe [1] 44750 7. Für% von 7 Variablen habe ich -> Prozentvar <- nrow (df [is.na (df $ Variable),])/NROW (df) - für jede Variable. Für% auf Datenframe habe ich -> sum (is.na (df))/prod (dim (df)) -. Ist es richtig für dich? –

+0

@jessicascucchia OK, ich werde meine Frage bearbeiten. Es gibt einfache Möglichkeiten, zu tun, was Sie wollen. Beachten Sie, dass Sie im obigen Code wirklich nicht "sapply" brauchen, "colSums" und "colMeans" tun es für Sie und sind effizienter. –

+0

@jessicascucchia Und ja, 'sum (is.na (df))/prod (dim (df))' gibt das gleiche Ergebnis wie meine letzte Codezeile. Aber meiner ist einfacher.** Hinweis: ** Benennen Sie nicht Ihren Datenrahmen 'df', da dies bereits eine 'base R'-Funktion ist. –

Verwandte Themen