2014-03-31 6 views
6

여기에 다른 문제가 있지만 동일한 문제를 해결할 수 있지만이를 기반으로 문제를 해결하는 방법을 알지 못합니다. 그래서, 나는 rbind를 사용하여 하나의 고유 한 데이터 프레임의 행을 병합 할 5 개 데이터 프레임을 가지고 있지만 그것은 오류 반환 :R rbind 오류 row.names 중복 허용되지 않습니다.

"오류에 row.names<-.data.frame (*tmp*, 값 = 값) : 'row.names'중복을 허용되지 않음 경고 메시지 : 'row.names'를 설정할 때 값이 고유하지 않음 : '1', '10', '100', '1000', '10000', '100000', '1000000' '1000001 [....]'

데이터 프레임은 동일한 열이지만 행 수가 다릅니다. rbind 명령이 첫 번째 열을 row.names로 사용한다고 생각했습니다. 그래서 5 개의 데이터 프레임에 순차적 ID를 넣으려고했지만 작동하지 않습니다. row.names()를 통해 데이터 프레임 사이에 순차적 인 행 이름을 지정하려고 시도했지만 성공하지는 못했습니다. 병합 명령은 5 가지 데이터 프레임이 있고 연속적인 병합이 선행을 덮어 쓰기 때문에 내가 생각하는 옵션이 아닙니다. ID로만 새 데이터 프레임을 만들고 조인하려고했지만 결과 데이터 프레임에 조인 된 df 열이 추가되지 않습니다.

id image  power  value pol class 
1 1 tsx_sm_hh 0.1834515 -7.364787 hh FR 
2 2 tsx_sm_hh 0.1834515 -7.364787 hh FR 
3 3 tsx_sm_hh 0.1991938 -7.007242 hh FR 
4 4 tsx_sm_hh 0.1991938 -7.007242 hh FR 
5 5 tsx_sm_hh 0.2079365 -6.820693 hh FR 
6 6 tsx_sm_hh 0.2079365 -6.820693 hh FR 
[...] 
1802124 1802124 tsx_sm_hh 0.1991938 -7.007242 hh FR 

네 개의 다른 안양의이 같은 구조이며, 그 사이에 숫자를 중복하지 않는 'ID'열 제외 :

는 안양 1의 추출물을 따릅니다. 'pol'및 'image'열은 레벨로 정의됩니다. 및 all.pol <- rbind(df1,df2,df3,df4,df5)이 중복 된 row.names 오류를 반환합니다.

아이디어가 있으십니까?

미리 감사드립니다.

+0

오류를 재현 할 수 없습니다. 2 개의 데이터 프레임의'str'을 게시 할 수 있습니까? 당신은 단지 두 바인딩을 시도하고 동일한 오류가 발생합니까? 'rbind (df1, df2, df3, df4, df5)'이러한 오류를 생성하는 데 사용하는 정확한 코드입니까? – rawr

+0

> str (포레스트) 'data.frame': \t 1802124 obs. 6 변수 중 : $ id : int 1 2 3 4 5 6 7 8 9 10 ... $ image : 9 수준의 "tsx_sm_hh", "tsx_sm_hv", .. : 1 1 1 1 1 1 1 1 1 1 1 ... $ power : num 0.183 0.183 0.199 0.199 0.208 ... $ sigma : 'data.frame': \t 1802124 obs. 1 변수 : .. $ value : num -7.36 -7.36 -7.01 -7.01 -6.82 ... $ pol : 3 수준 "hh", "hv", "vv": 1 1 1 1 1 1 1 1 1 1 ... $ class : chr "FR" "FR" "FR" "FR"... – Jecogeo

+0

> str (herb) 'data.frame': \t 1960371 obs. 6 변수 중 : $ id : int 1802125 1802126 1802127 1802128 1802129 1802130 1802131 1802132 1802133 1802134 ... $ image : "tsx_sm_hh", "tsx_sm_hv", ... : 1 1 1 1 1 1 1 1 1 1 ... $ power : num 0.16 0.165 0.165 0.165 0.185 ... $ sigma : 'data.frame': \t 1960371 obs. 1 변수 : .. $ value : num -7.96 -7.84 -7.84 -7.84 -7.32 ... $ pol : 3 수준 "hh", "hv", "vv": 1 1 1 1 1 1 1 1 1 1 ... $ class : chr "HB" "HB" "HB" "HB"... – Jecogeo

답변

13

나는 최근에 같은 오류가있었습니다. 저의 경우 문제가 된 것은 데이터 프레임의 속성 중 하나가 목록입니다. 기본 개체 (예 : 숫자)로 캐스팅 한 후 rbind은 정상적으로 작동했습니다.

By row 이름은 첫 번째 변수의 왼쪽에있는 "행 번호"입니다. 귀하의 예제에서는 1, 2, 3, ... (귀하의 id 변수와 동일)입니다.

rownames(df)을 사용하여 확인할 수 있으며 rownames(df) <- name_vector (name_vector은 길이가 df이어야하며 요소는 고유해야 함)로 설정합니다.