web-dev-qa-db-ja.com

列内のNA値の数を決定する

データフレーム列のNA値の数を数えたいのですが。私のデータフレームがdfであり、私が考えているカラムの名前がcolであるとしましょう。私が思いついた方法は次のとおりです。

sapply(df$col, function(x) sum(length(which(is.na(x)))))  

これはこれを行うための良い/最も効率的な方法ですか?

114
user3274289

あなたは問題を見過ごしています:

sum(is.na(df$col))
276
rrs

データフレームの各列についてNAの数を探しているなら、

na_count <-sapply(x, function(y) sum(length(which(is.na(y)))))

各列の数のリストが表示されます。

na_count <- data.frame(na_count)

次のようなデータフレームでデータをうまく出力する必要があります。

----------------------
| row.names | na_count
------------------------
| column_1  | count
70
Kevin Ogoro

colSums関数を試す

df <- data.frame(x = c(1,2,NA), y = rep(NA, 3))

colSums(is.na(df))

#x y 
#1 3 
26
Tony Ladson

データフレーム全体に含まれるNAの数を数えようとしているなら、あなたも使うことができます。

sum(is.na(df))
16
bkielstr

summary()の出力では、この関数はNAsも数えるので、複数の変数のNAsの合計が必要な場合にこの関数を使用できます。

12
Shahin

データフレームのすべての列のnullの数を数えるための巧妙な方法:

library(tidyverse)
library(purrr)

df %>%
    map_df(function(x) sum(is.na(x))) %>%
    gather(feature, num_nulls) %>%
    print(n = 100)
10
Abi K

この形式は、Kevin Ogorosのものからわずかに変更されました。

na_count <-function (x) sapply(x, function(y) sum(is.na(y)))

名前付きint配列としてNAカウントを返す

7
hute37

User rrs answerは正しいですが、データフレーム全体のNA値の数を取得するために渡しているデータフレームの特定の列にあるNA値の数だけがわかります。

apply(<name of dataFrame>, 2<for getting column stats>, function(x) {sum(is.na(x))})

これはトリックです

3
iec2011007

これを試して:

length(df$col[is.na(df$col)])
2

ローカルディレクトリからcsvファイルを読みます。以下のコードは私のために働きます。

# to get number of which contains na
sum(is.na(df[, c(columnName)]) # to get number of na row

# to get number of which not contains na
sum(!is.na(df[, c(columnName)]) 

#here columnName is your desire column name
2
reza.cse08

Hute37の答えに似ていますが、purrライブラリを使っています。私はこの巧妙なアプローチがAbiKによって提案された答えよりも簡単であると思います。

map_dbl(df, ~sum(is.na(.)))

注:ティルダは無名関数を作成します。そしてその '。'無名関数の入力を参照します。この場合、data.frame dfです。

1
Chris Kiniry

これを使用して、各列のNAまたはブランクの数を数えることができます。

colSums(is.na(data_set_name)|data_set_name == '')
0