質問

これは、データフレームから欠損値の変数を報告するために書いたコードの小さな部分です。私はこれを行うためのよりエレガントな方法を考えようとしています。おそらくdata.frameを返すものですが、私は立ち往生しています:

for (Var in names(airquality)) {
    missing <- sum(is.na(airquality[,Var]))
    if (missing > 0) {
        print(c(Var,missing))
    }
}

編集:私はdata.framesを数十から数百の変数を扱っているので、欠損値の変数のみを報告することが重要です。

役に立ちましたか?

解決

使用するだけです sapply

> sapply(airquality, function(x) sum(is.na(x)))
  Ozone Solar.R    Wind    Temp   Month     Day 
     37       7       0       0       0       0

使用することもできます apply また colSums によって作成されたマトリックス上 is.na()

> apply(is.na(airquality),2,sum)
  Ozone Solar.R    Wind    Temp   Month     Day 
     37       7       0       0       0       0
> colSums(is.na(airquality))
  Ozone Solar.R    Wind    Temp   Month     Day 
     37       7       0       0       0       0 

他のヒント

使用できます map_df purrrで。

library(mice)
library(purrr)

# map_df with purrr
map_df(airquality, function(x) sum(is.na(x)))
# A tibble: 1 × 6
# Ozone Solar.R  Wind  Temp Month   Day
# <int>   <int> <int> <int> <int> <int>
# 1    37       7     0     0     0     0

(幅が広すぎない)データの私の新しいお気に入りは、優れたメソッドです ナニア パッケージ。周波数を取得するだけでなく、欠落のパターンも取得します。

library(naniar)
library(UpSetR)

riskfactors %>%
  as_shadow_upset() %>%
  upset()

enter image description here

ミスが散布図でプロットすることで達成できる欠落との関係にある場所を確認することはしばしば役立ちます。

ggplot(airquality,
       aes(x = Ozone,
           y = Solar.R)) +
 geom_miss_point()

enter image description here

またはカテゴリ変数の場合:

gg_miss_fct(x = riskfactors, fct = marital)

enter image description here

これらの例はパッケージからのものです ビネット これには、他の興味深い視覚化がリストされています。

summary(airquality)

すでにこの情報を提供しています

vim パッケージはまた、data.frameのためのいくつかの素晴らしい欠落データプロットを提供します

library("VIM")
aggr(airquality)

enter image description here

もっと簡潔 - : sum(is.na(x[1]))

あれは

  1. x[1] 最初の列を見てください

  2. is.na() もしそうなら真です NA

  3. sum() TRUE1, FALSE0

別のグラフィカルな代替品 - plot_missing 優れた機能 DataExplorer パッケージ:

enter image description here

ドキュメント また、追加の分析のためにこの結果を保存できるという事実も指摘しています missing_data <- plot_missing(data).

欠落データを見るのに役立つ別の機能は、FunModelingライブラリのDF_STATUSです

library(funModeling)

IRIS.2は、いくつかの追加されたNASを備えたIRISデータセットです。これをデータセットに置き換えることができます。

df_status(iris.2)

これにより、各列のNASの数と割合が得られます。

もう1つのグラフィカルなソリューションのために、 visdat パッケージ 申し出 vis_miss.

library(visdat)
vis_miss(airquality)

enter image description here

非常に似ています Amelia 箱から出したミスに%sを与えるというわずかな違いのある出力。

Amelia Libraryは、欠落データの処理において素晴らしい仕事をしていると思います。また、欠落している行を視覚化するためのマップも含まれています。

install.packages("Amelia")
library(Amelia)
missmap(airquality)

enter image description here

次のコードを実行することもできます。NAのロジック値を返すこともできます

row.has.na <- apply(training, 1, function(x){any(is.na(x))})

別のグラフィカルでインタラクティブな方法は使用することです is.na10 fruction heatmaply 図書館:

library(heatmaply)

heatmaply(is.na10(airquality), grid_gap = 1, 
          showticklabels = c(T,F),
            k_col =3, k_row = 3,
            margins = c(55, 30), 
            colors = c("grey80", "grey20"))

enter image description here

おそらく大きなデータセットではうまく機能しません。

特定の列でそれをしたい場合は、これを使用することもできます

length(which(is.na(airquality[1])==T))

Expandarのパッケージ機能 prepare_missing_values_graph パネルデータを探索するために使用できます。

enter image description here

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top