SQLの SELECT SUM(FIELD1) FROM TABLE のような集合関数(集計関数)に対応するR言語の操作について解説します。
🔢 集合関数(集計関数)の対応
SQLの集合関数は、データのグループ全体またはテーブル全体に対して計算を行い、単一の値を返します。
R言語では、dplyr パッケージの summarise()(または summarize())関数が、この集合関数の実行に主に使用されます。
R言語での基本的な使い方
summarise() 関数は、データフレームを引数に取り、指定された関数(集合関数)を実行し、その結果を新しいデータフレーム(通常は1行)として返します。
| SQL | R言語 (dplyr + summarise) | 説明 |
SELECT SUM(FIELD1) FROM TABLE | TABLE %>% 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言語でどのように実行できるか理解できたはずです。