これは、データフレームの欠損値を持つ変数を報告するために書いたコードの一部です。私はこれを行うためのよりエレガントな方法、おそらく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
is.na()
によって作成されたマトリックスでapply
またはcolSums
を使用することもできます
> 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
(あまり広くない)データの私のお気に入りは、優れた naniar パッケージのメソッドです。周波数を取得するだけでなく、欠落のパターンも取得します。
library(naniar)
library(UpSetR)
riskfactors %>%
as_shadow_upset() %>%
upset()
欠損がある散布図をプロットすることで達成できる、欠損が非欠損に関連してどこにあるかを確認することはしばしば有用です:
ggplot(airquality,
aes(x = Ozone,
y = Solar.R)) +
geom_miss_point()
または、カテゴリー変数の場合:
gg_miss_fct(x = riskfactors, fct = marital)
これらの例は、パッケージ vignette からのもので、他の興味深い視覚化をリストしています。
もっと簡潔に:sum(is.na(x[1]))
あれは
x[1]
最初の列を見る
is.na()
NA
の場合はtrue
sum()
TRUE
は1
、FALSE
は0
です
別のグラフィカルな代替-優れたDataExplorer
パッケージのplot_missing
関数:
Docs は、missing_data <- plot_missing(data)
を使用して追加の分析のためにこの結果を保存できるという事実も指摘しています。
欠落データを調べるのに役立つ別の関数は、funModelingライブラリのdf_statusです
library(funModeling)
iris.2は、NAが追加されたアイリスデータセットです。これをデータセットに置き換えることができます。
df_status(iris.2)
これにより、各列のNAの数と割合がわかります。
もう1つのグラフィカルなソリューションとして、visdat
package はvis_miss
を提供します。
library(visdat)
vis_miss(airquality)
Amelia
出力と非常によく似ていますが、箱から出して不足している部分に%sを与えるというわずかな違いがあります。
特定の列に対してそれを行いたい場合は、これを使用することもできます
length(which(is.na(airquality[1])==T))
ExPanDaRのパッケージ関数 prepare_missing_values_graph
は、パネルデータの探索に使用できます。