2017-10-05 22 views
-2

NAのデータフレームと変数のパーセンテージを計算したいと思います。私はこの結果を読んでどのようにNa値のパーセンテージ(データフレームと変数)R

mean(is.na(dataframe)) 
# 0.03354 

私のデータフレームはこれを持っていますか? Na 0,033%?わかりません。私が得るため

colMeans(is.na(VARIABLEX)) 

動作しません:NA - 値の割合がために、私は、その後NA

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

の数については、以下のなかった個々の変数の場合

次のエラー:

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

なぜこのエラーが発生するのですかウル?とにかく、その後私は、次のことを試してみました:

mean(is.na(VariableX)) 
# 0.1188 

は私が0.11%NA - 値を持つものとしてこれを解釈すべきか?

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

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

います:

+0

ようこそ! [ask]と https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-exampleと[mcve]を読んで質問を編集してください。 – jogo

答えて

0

私はちょうど行の合計数でのNAを含む行の数を分割したい手段

> percent_NA 
[1] 0.6666667 

がある66,67%NASに私のデータフレーム

0

解決しようとしている問題はわかりません。それはすべて期待通りに機能します。
まず、データセットを提供していないので、データセット。

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)) 

合計コード。

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 

同じ手段のために行く、それmeanまたはcolMeansこと。
EDIT。
ここでは、列/変数および総計につき平均値NAの値を取得するコードを示します。

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

私はNa値のデータフレームと変数のパーセンテージを取得します。私はデータフレームを持っています [1] 44750 7.変数の%に対して、 - %percentvar < - nrow(df [is.na(df $ variable)、])/ NROW(df) - 各変数に対して行いました。データフレームの%については、 - > sum(is.na(df))/ prod(dim(df)) - でした。それはあなたのために正しくですか? –

+0

@jessicascucchia OK、私は私の質問を編集します。あなたがしたいことをする簡単な方法があります。上記のコードでは、実際には 'sapply'は必要ないことに注意してください。' colSums'と 'colMeans'はそれを行い、より効率的です。 –

+0

@jessicascucchiaそして、 'sum(is.na(df))/ prod(dim(df))'は私の最後のコード行と同じ結果を返します。しかし、私のほうが簡単です。**注意:**すでに 'base R'関数であるので、あなたのデータフレームに' df'という名前をつけないでください。 –

関連する問題