6.集合関数-SQL経験者のためのR入門

SQLの SELECT SUM(FIELD1) FROM TABLE のような集合関数(集計関数)に対応するR言語の操作について解説します。


🔢 集合関数(集計関数)の対応

SQLの集合関数は、データのグループ全体またはテーブル全体に対して計算を行い、単一の値を返します。

R言語では、dplyr パッケージの summarise()(または summarize())関数が、この集合関数の実行に主に使用されます。

R言語での基本的な使い方

summarise() 関数は、データフレームを引数に取り、指定された関数(集合関数)を実行し、その結果を新しいデータフレーム(通常は1行)として返します。

SQLR言語 (dplyr + summarise)説明
SELECT SUM(FIELD1) FROM TABLETABLE %>% summarise(Total = sum(FIELD1))FIELD1合計を計算し、Total という新しい列名で表示します。

集合関数の具体的な対応表

SQL集合関数R言語の関数 (要約)R言語のコード例
SUM() (合計)sum()summarise(Total = sum(Amount))
MAX() (最大値)max()summarise(Maximum = max(Score))
MIN() (最小値)min()summarise(Minimum = min(Score))
AVG() (平均値)mean()summarise(Average = mean(Value))
COUNT() (行数)n() (行数) または sum(!is.na(Col)) (非NULL値の数)summarise(Count_Rows = n())

⚠️ NA(欠損値)の取り扱いについて

SQLの集合関数と同様に、Rのこれらの関数(sum, mean, min, max)は、**欠損値(NA)**が含まれていると結果も NA になる場合があります。これを避けるため、通常は引数に na.rm = TRUE を追加します。

  • 例: summarise(Average = mean(Value, **na.rm = TRUE**))

集合関数のコード例

データフレーム sales_data を使用し、上記の集合関数を一度に実行する例です。

R

# SQLの意図:
# SELECT SUM(Revenue), MAX(Revenue), MIN(Revenue), AVG(Revenue), COUNT(*)
# FROM sales_data

# R言語:
library(dplyr)

sales_data %>%
  summarise(
    Total_Revenue = sum(Revenue, na.rm = TRUE),    # SUMに対応
    Max_Revenue   = max(Revenue, na.rm = TRUE),    # MAXに対応
    Min_Revenue   = min(Revenue, na.rm = TRUE),    # MINに対応
    Avg_Revenue   = mean(Revenue, na.rm = TRUE),   # AVGに対応
    Total_Records = n()                            # COUNT(*)に対応
  )

GROUP BY との組み合わせ

集合関数は通常、GROUP BY 句と組み合わせて使われます。R言語では、group_by() の後に summarise() を連鎖させることで、この操作を実現します。

  • SQL: SELECT Category, AVG(Price) FROM Products GROUP BY Category
  • R言語:

R

Products %>%
  group_by(Category) %>% # GROUP BYに対応
  summarise(Avg_Price = mean(Price, na.rm = TRUE)) # AVGに対応

これで、SQLの主要な集合関数をR言語でどのように実行できるか理解できたはずです。