Rでパイプ演算子を使用してクロス集計

 

 Rでなるべくtidyverseパッケージ(とのその関連)で統一してデータ分析をすることを考えたときに、クロス集計のやり方として、下のようなspread関数を使用する方法を比較的よく見ます(行方向に比率を集計)。 

library(tidyverse)

data(mtcars)

 

mtcars %>%
group_by(am) %>%
count(gear) %>%
mutate(prop = n/sum(n)) %>%
select(-n) %>%
spread(gear, prop, fill = 0)

 

 あるいはjanitorパッケージを使用するというのもあるようです。

library(janitor)

 

mtcars %>%
tabyl(am, gear) %>%
adorn_percentages("row")  

 

 しかし、table関数を使用する下記のようなやり方がシンプルでよいように思いました。

mtcars %>%
with(table(am, gear)) %>%
prop.table(margin = 1)