R での修正方法: エラー: 行の識別子が重複しています


R で発生する可能性のあるエラーは次のとおりです。

 Error: Duplicate identifiers for rows

このエラーは、 spread()関数を使用して、データ フレーム内の 1 つ以上の列の値をそれぞれの列に分散しようとすると発生します。

ただし、各行に一意の ID がない場合はエラーが発生する可能性があるため、分布の実行時にどの値がどの観測値に属するかを判断する方法がありません。

次の例は、このエラーを実際に修正する方法を示しています。

例: エラーを修正する方法

R に、さまざまなバスケットボール選手に関する情報を含む次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (player=rep(c(' A ', ' B '), each= 4 ),
                 year=rep(1:4, times= 2 ),
                 assists=c(4, 10, 4, 4, 3, 7, 7, 6),
                 dots=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year assists points
1 A 1 4 14
2 A 2 10 6
3 To 3 4 18
4 To 4 4 7
5 B 1 3 22
6 B 2 7 9
7 B 3 7 38
8 B 4 6 4

ここで、 year列を id 列として持つようにデータ フレームを変換し、各年の間のプレーヤー A と B のアシストとポイントの値を表すために、 Assists_AAssists_Bpoints_Apoints_Bという新しい列を作成するとします。 。

year 列の値は一意ではないため (1 が 2 つ、2 が 2 つなど)、 spread()関数はエラーを生成します。

ただし、次の構文でpivot_wider()関数を使用して、目的のデータ フレームを生成できます。

 library (tidyr)

#spread the values in the points and assists columns
pivot_wider(data = df, 
            id_cols = year, 
            names_from = player, 
            values_from = c(' assists ', ' points '))

# A tibble: 4 x 5
   year assists_A assists_B points_A points_B
                    
1 1 4 3 14 22
2 2 10 7 6 9
3 3 4 7 18 38
4 4 4 6 7 4

エラーは発生せず、プレーヤー A と B の 4 年間のそれぞれのポイントとアシストの値を表示する新しい列を正常に作成できることに注意してください。

追加リソース

次のチュートリアルでは、R の他の一般的なエラーを修正する方法について説明します。

R で修正する方法: 強制によって導入された NA
R で修復する方法: 範囲外のインデックス
R での修正方法: 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではない
R での修復方法: 置換する要素の数が置換長の倍数ではありません

コメントを追加する

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