!表形式でデータを集計したい いわゆるピボットテーブルのようにデータを集計したければ、table()関数がある。 table(df$x, df$y) で縦横の度数テーブルができる。なお、要素を3つ入れると三次元のテーブルになり、要素にベクトルを設定すると層別に表示される。 margin.table(tbl, 1:3) とすればテーブルtblの1番目から3番目までの要素の合計値が計算される。 :オプションでNAの扱いを指定する: デフォルトではNAのデータは集計の対象から外される。したがって空欄が意味を持つようなデータであれば、明示的にNAを含めるように指定してやる。 table(x, y, useNA="ifany") !割合で表示する prop.table(table(df$x, df$y), 1) とすれば、度数テーブルが割合テーブルに変換できる。 1は行を100%とするとき、2は列を100%とするときに使う。 {{category データ要約}} !pivot_wider()を使う 値の集計は関数でできたが、件数を集計したいときにすこし苦労したので、記録 library(tidyverse) grh <- read.table(file = "~/Desktop/count.csv", sep=",", header = T) grh |> select(-area_2) |> #不要な項目を除外 group_by(area_1, type, pref) |> #集計したいグループを定義 summarise(N = n()) |> #件数を集計 pivot_wider(names_from = pref, values_from = N, values_fill = 0) #縦横表示 pivot_wider()で最初から一気に表にしようとせず、表の元になるデータをなるべくシンプルに作っておいて、表にするほうが見通しが良い。