トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン 印刷

table()

auditR

表形式でデータを集計したい

いわゆるピボットテーブルのようにデータを集計したければ、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%とするときに使う。

[データ要約]

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()で最初から一気に表にしようとせず、表の元になるデータをなるべくシンプルに作っておいて、表にするほうが見通しが良い。


Last updated 2022-10-26 | auditR (c) N.Nawata