多数の項目を使用して調査を実施しました。各項目には、因子として格納された個別のカテゴリ応答オプションがあります。これらの列を効率的な方法で要約する必要があります。できれば が提供するような機能を使用しforcats::fct_count()ます。また、さまざまなアイテムがさまざまな回答者に表示されるため、変数ごとに提供された非 NA 回答の数を知る必要があります。きちんとした小さな要約データ フレームを作成する関数を作成しましたが、この関数を各列に沿って効率的に実行し、結果を単一のオブジェクト (ala ddply)に結合するのに苦労しています。
データを長い形式にしてから実行しようとしましsapply()たが、各変数のレベルが異なるという問題が邪魔をし続けているようです。データセットと要約関数の再現可能な例については、以下を参照してください。(以下に示すように) 各変数に対して関数を実行することもできますが、大量の個別の集計データ フレーム オブジェクトを作成する必要のない、より効率的な方法が必要であることはわかっています。ご協力いただきありがとうございます。gather()ddply()
data <- data.frame(
ID = c(1:50),
X = as.factor(sample(c("yes", "no", NA), 50, replace = TRUE)),
Y = as.factor(sample(c("a", "b", "c", NA), 50, replace = TRUE)),
Z = as.factor(sample(c("d", "e", "f", "g", "h", NA), 50, replace = TRUE))
)
library(tidyverse)
library(forcats)
factorsummaries.f <- function(x) {
x <- na.omit(x)
counts <- fct_count(fct_drop(x), sort = T)
counts$f <- as.character(counts$f)
total <- data.frame(f = "sum", n = as.numeric(sum(counts$n)))
return(bind_rows(counts, total))
}
factorsummaries.f(data$X)
factorsummaries.f(data$Y)