「expss」パッケージを使用して、以下のタスクを達成する最も簡単な方法を探しています。
「expss」の優れたパッケージを使用すると、クロス集計を簡単に行うことができます (クロス集計には他の利点と便利な機能があります)。以下のように、複数の変数を簡単にクロス集計できます。
#install.packages("expss")
library("expss")
data(mtcars)
var1 <- "vs, am, gear, carb"
var_names = trimws(unlist(strsplit(var1, split = ",")))
mtcars %>%
tab_prepend_values %>%
tab_cols(total(), ..[(var_names)]) %>%
tab_cells(cyl) %>%
tab_stat_cpct() %>%
tab_pivot()
上記の出力は次のとおりです。 (列 %)
#Total vs am gear carb
0 1 0 1 3 4 5 1 2 3 4 6 8
cyl 4 34.4 5.6 71.4 15.8 61.5 6.7 66.7 40 71.4 60
6 21.9 16.7 28.6 21.1 23.1 13.3 33.3 20 28.6 40 100
8 43.8 77.8 63.2 15.4 80.0 40 40 100 60 100
#Total cases 32.0 18.0 14.0 19.0 13.0 15.0 12.0 5 7.0 10 3 10 1 1
ただし、以下のようなテーブルを作成する方法を探しています。
CYL | VS = 0 | AM = 1 | Gear = 4 or Gear = 5 | Carb (All)
4 5.56 61.54 58.82 34.38
6 16.67 23.08 29.41 21.88
8 77.78 15.38 11.76 43.75
Total(col%) 100.00 100.00 100.00 100.00
dplyr と join 関数を使用してこれを実現できますが、実行時または動的に変数を渡す必要がある場合は複雑すぎます。
どんな助けもかなりのものです。ありがとう!!