A: 条件でグループ化してカウントする方法
次の基本構文を使用して、R でグループ化およびカウント条件を実行できます。
library (dplyr) df %>% group_by(var1) %>% summarize(count = sum(var2 == ' val '))
この特定の構文は、 var1に基づいてデータ フレームの行をグループ化し、 var2 が「val」と等しい行の数をカウントします。
次の例は、この構文を実際に使用する方法を示しています。
例: R の条件によるグループ化とカウント
R に、さまざまなバスケットボール選手に関する情報を含む次のデータ フレームがあるとします。
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), pos=c('Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'), points=c(18, 22, 19, 14, 14, 11, 20, 28)) #view data frame df team pos points 1 A Gu 18 2 A Fo 22 3 A Fo 19 4 A Fo 14 5 B Gu 14 6 B Gu 11 7 B Fo 20 8 B Fo 28
次のコードは、データ フレームをチーム変数ごとにグループ化し、 pos変数が「Gu」に等しい行数をカウントする方法を示しています。
library (dplyr)
#group by team and count rows where pos is 'Gu'
df %>%
group_by(team) %>%
summarize(count = sum(pos == ' Gu '))
# A tibble: 2 x 2
team count
1 to 1
2 B 2
結果から次のことがわかります。
- チーム A には、pos 列が「Gu」に等しい行が1つあります。
- チーム B には、pos 列が「Gu」に等しい行が2 つあります。
同様の構文を使用して、数値条件を使用してグループ化およびカウントすることができます。
たとえば、次のコードは、チーム変数ごとにグループ化し、ポイント変数が 15 より大きい行数をカウントする方法を示しています。
library (dplyr)
#group by team and count rows where pos is 'Gu'
df %>%
group_by(team) %>%
summarize(count = sum(points > 15 ))
# A tibble: 2 x 2
team count
1 to 3
2 B 2
結果から次のことがわかります。
- チーム A には、ポイント列が 15 を超える行が3 つあります。
- チーム B には、ポイント列が 15 を超えるラインが2 つあります
同様の構文を使用して、必要な特定の条件でグループ化およびカウントすることができます。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。