Data.Frame内の欠損値を報告するエレガントな方法
-
25-10-2019 - |
質問
これは、データフレームから欠損値の変数を報告するために書いたコードの小さな部分です。私はこれを行うためのよりエレガントな方法を考えようとしています。おそらく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()
ミスが散布図でプロットすることで達成できる欠落との関係にある場所を確認することはしばしば役立ちます。
ggplot(airquality,
aes(x = Ozone,
y = Solar.R)) +
geom_miss_point()
またはカテゴリ変数の場合:
gg_miss_fct(x = riskfactors, fct = marital)
これらの例はパッケージからのものです ビネット これには、他の興味深い視覚化がリストされています。
もっと簡潔 - : sum(is.na(x[1]))
あれは
x[1]
最初の列を見てくださいis.na()
もしそうなら真ですNA
sum()
TRUE
は1
,FALSE
は0
別のグラフィカルな代替品 - plot_missing
優れた機能 DataExplorer
パッケージ:
ドキュメント また、追加の分析のためにこの結果を保存できるという事実も指摘しています 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)
非常に似ています Amelia
箱から出したミスに%sを与えるというわずかな違いのある出力。
特定の列でそれをしたい場合は、これを使用することもできます
length(which(is.na(airquality[1])==T))
Expandarのパッケージ機能 prepare_missing_values_graph
パネルデータを探索するために使用できます。