Dplyrを使用して各行に関数を適用する方法


次の基本構文を使用すると、dplyr 関数を使用して R のデータ フレームの各行に関数を適用できます。

 df %>%
  rowwise() %>% 
  mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))

この特定の例では、データ フレーム内の各行のcol1col2 、およびcol3の平均値を計算しますが、 Mean()関数を、別のメトリックを計算する任意の関数に置き換えることができます。

次の例は、さまざまな試合でさまざまなバスケットボール選手が獲得したポイントに関する情報を含む次のデータ フレームでこの構文を実際に使用する方法を示しています。

 #create data frame
df <- data. frame (game1=c(22, 25, 29, 13, 22, 30),
                 game2=c(12, 10, 6, 6, 8, 11),
                 game3=c(NA, 15, 15, 18, 22, 13))

#view data frame
df

  game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13

例 1: 各行の特定の列の平均

次のコードは、データ フレーム内の各行のgame1 列game3列の平均値を計算する方法を示しています。

 library (dplyr)

#calculate mean of game1 and game3
df %>%
  rowwise() %>% 
  mutate(mean_points = mean(c(game1, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 mean_points
           
1 22 12 NA 22  
2 25 10 15 20  
3 29 6 15 22  
4 13 6 18 15.5
5 22 8 22 22  
6 30 11 13 21.5

結果から次のことがわかります。

  • 最初の行の game1 と game3 の平均値は22です。
  • 2 行目の game1 と game3 の平均値は20です。
  • 3 行目の game1 と game3 の平均値は22です。

等々。

例 2: 各行の特定の列の最大数

次のコードは、データ フレーム内の各行のgame2 列game3列の最大値を計算する方法を示しています。

 library (dplyr)

#calculate max of game2 and game3
df %>%
  rowwise() %>% 
  mutate(max_points = max(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 max_points
          
1 22 12 NA 12
2 25 10 15 15
3 29 6 15 15
4 13 6 18 18
5 22 8 22 22
6 30 11 13 13

結果から次のことがわかります。

  • 最初の行の game2 と game3 の最大値は12です。
  • 2 行目の game2 と game3 の最大値は15です。
  • 3 行目の game2 と game3 の最大値は15です。

等々。

例 3: 各行の特定の列の標準偏差

次のコードは、データ フレームの各行のgame2 列game3列の値の標準偏差を計算する方法を示しています。

 library (dplyr)

#calculate standard deviation of game2 and game3
df %>%
  rowwise() %>% 
  mutate(sd_points = sd(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 sd_points
         
1 22 12 NA NA   
2 25 10 15 3.54
3 29 6 15 6.36
4 13 6 18 8.49
5 22 8 22 9.90
6 30 11 13 1.41

結果から次のことがわかります。

  • 最初の行の game2 と game3 の標準偏差は NA です (標準偏差は単一の値から計算できないため)。
  • 2 行目の game2 と game3 の標準偏差は3.54です。
  • 最初の行の game2 と game3 の標準偏差6.36

等々。

: dplyr のrowwise()関数の完全なドキュメントは、ここで見つけることができます。

追加リソース

次のチュートリアルでは、dplyr を使用して他の一般的なタスクを実行する方法について説明します。

dplyrを使用して個別の値をカウントする方法
dplyr を使用して複数の列を合計する方法
dplyrを使用してデータフレーム内の複数の値を置き換える方法

コメントを追加する

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