R 수정 방법: 오류: 행의 중복 식별자


R에서 발생할 수 있는 오류는 다음과 같습니다.

 Error: Duplicate identifiers for rows

이 오류는 Spread() 함수를 사용하여 데이터 프레임에 있는 하나 이상의 열 값을 자체 열에 분산시키려고 할 때 발생합니다.

그러나 각 행마다 고유한 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

이제 연도 열을 id 열로 포함하도록 데이터 프레임을 변환하고, 매년 진행되는 동안 플레이어 A와 B의 어시스트 및 포인트 값을 나타내기 위해 어시스트_A , 어시스트_B , 포인트_A포인트_B 라는 새 열을 생성한다고 가정합니다. .

연도 열의 값은 고유하지 않으므로(1이 2개, 2가 2개 등이 있음) Spread() 함수에서 오류가 발생합니다.

그러나 원하는 데이터 프레임을 생성하기 위해 다음 구문과 함께 ivot_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

오류가 발생하지 않으며 4년마다 플레이어 A와 B의 포인트 및 어시스트 값을 표시하는 새 열을 성공적으로 생성할 수 있습니다.

추가 리소스

다음 튜토리얼에서는 R의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

R에서 수정하는 방법: 강제로 인해 발생하는 NA
R에서 복구하는 방법: 범위를 벗어난 인덱스
R에서 수정하는 방법: 긴 물체의 길이가 더 짧은 물체 길이의 배수가 아닙니다.
R에서 수리하는 방법: 교체할 요소 수가 교체 길이의 배수가 아닙니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다