4

「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 関数を使用してこれを実現できますが、実行時または動的に変数を渡す必要がある場合は複雑すぎます。

どんな助けもかなりのものです。ありがとう!!

4

2 に答える 2