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 で他の一般的なタスクを実行する方法について説明します。

Rで条件付きで列の値をカウントする方法
Rのグループごとに最初のN個の値を選択する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です