!データを要約する データをグループ分けして要約するには、group_by() + summarise() が便利 #元になるデータ(3種類のサイコロの出る目の数、100回分) d <- data.frame (A = as.integer( runif(100, min = 1, max = 7) ), B = as.integer( runif(100, min = 1, max = 7) ), C = as.integer( runif(100, min = 1, max = 7) )) # 確率を求める d |> pivot_longer(names_to = "ABC", cols = c("A", "B", "C")) |> # データを縦長に変換 group_by(ABC, value) |> # サイコロABCごと出る目valueごとにグループ化 summarise(N = n()) |> # ここでグループ単位で合計が出される(グループvalueが一段解除される) mutate(Rate = N/sum(N)) |> # グループABC単位でsumが計算されるためRateはサイコロごと pivot_wider(names_from = ABC, values_from = Rate) :参考: * https://notchained.hatenablog.com/entry/2020/06/28/134109 !group_byの問題点もある 詳しくはこちら https://blog.atusy.net/2024/12/19/dplyr-groupby/ summarize()のオプションにある".by="を使うと、group_byを使わなくても演算できるケースもある。