Dplyr を使用してカスタム順序で行を配置する方法


R のdplyrパッケージを使用して、次の基本構文を使用してデータ フレームの行をカスタム順序で配置できます。

 library (dplyr)

#arrange rows in custom order based on values in 'team' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

この特定の例では、チーム列値のカスタム順序 C、B、D、A に基づいて行を配置し、次にポイント列値に従って昇順に行を配置します。

次の例は、この構文を実際に使用する方法を示しています。

例: dplyr を使用してカスタム順序で行を配置する方法

さまざまなチームのバスケットボール選手が獲得したポイントを示す次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'B', 'A', 'A', 'B', 'D', 'C', 'D', 'D', 'C'),
                 points=c(12, 20, 14, 34, 29, 22, 28, 15, 20, 13))

#view data frame
df

   team points
1 to 12
2 B 20
3 to 14
4 to 34
5 B 29
6 D 22
7 C 28
8 D 15
9 D 20
10 C 13

array()関数を使用してチーム列の値に基づいて行を並べ替える場合、次にポイント列の値に基づいて、 arrange()関数はデフォルトのアルファベット順に基づいて行を並べ替えます。 :

 library (dplyr)

#arrange rows in ascending order by team, then by points
df %>%
  arrange(team, points)

   team points
1 to 12
2 to 14
3 to 34
4 B 20
5 B 29
6 C 13
7 C 28
8 D 15
9 D 20
10 D 22

ラインはチームごとにアルファベット順にリストされ、次にポイントごとに昇順にリストされます。

ただし、代わりに、チーム値の順序である C、B、D、A に基づいて行を配置するとします。

これを行うには、 arrange()関数内でmatch()関数を使用します。

 library (dplyr)

#arrange rows in custom order based on 'team' column, then by 'points' column
df %>%
  arrange(match(team, c(' C ', ' B ', ' D ', ' A ')), points)

   team points
1 C 13
2 C 28
3 B 20
4 B 29
5 D 15
6 D 20
7 D 22
8 to 12
9 to 14
10 to 34

行は、チーム列に指定したカスタム順序 (C、B、D、A) で配置され、次にポイント列ごとに配置されます。

注意 #1 : match関数はチーム列の値の行インデックスを取得し、 arrange関数はこれらのインデックス値に基づいて並べ替えることができます。

注 #2 : ポイント値を減少させて配置するには、代わりにdesc(points)を使用します。

追加リソース

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

dplyr を使用してグループごとに行を整理する方法
dplyrを使用して一意の値をフィルタリングする方法
dplyrを使って複数の条件でフィルタリングする方法

コメントを追加する

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