2016-11-22 1 views
-4

.dbf 파일의 첫 번째 열 이름을 지정하지 않고 셰이프 파일에서 부분 집합을 수행하고 싶습니다. 더 정확하게하려면 .dbf의 첫 번째 열에서 값이 1 인 모든 행을 선택하고 싶지만이 열의 이름을 지정하고 싶지 않습니다. 비교 : 나는셰이프 파일에서 데이터를 부분 집합화할 수 없습니다.

library(rgdal) # readOGR 

shapeIn <- readOGR(nomeFile) 
shapeOut <- subset(shapeIn, columnName == 1) 

대신 그렇지

shapeOut <- (shapeIn[,1] == 1) 

를 작동 않습니다 나는 오류 메시지 (COLUMNNAME로) 컬럼의 이름을 지정하기 때문에

예를 들어이 스크립트 작동 (1)은 원자 및 목록 유형에서만 가능합니다. shapeOut 및 shapeIn은 ESRI 벡터 파일입니다.

이것은 당신이 나를 도울 수 있습니까 shapeIn

coordinates mask_1000_ 
1 (54000, 1218000)   0 
2 (55000, 1218000)   0 
3 (56000, 1218000)   0 

의 헤더입니까? SpatialPolygonsDataFrames 데이터 이외의 다른 정보를 포함 beacuse이

shapeOut <- (shapeIn[,1] == 1) 

작동하지 않는 당신

+0

친애하는 커뮤니티 인 "내 셰이프 파일의 데이터를 부분 집합 할 수 없습니다"라는 제목의 게시물이 4 번 downvoted되었습니다. 그럼에도 불구하고 문제는 11 월 24 일 LoBu에 의해 긍정적으로 해결되었습니다. 포럼을 다시 사용할 수 있기를 원하기 때문에 내 금지 조항을 제거하기 위해해야 ​​할 일을 명시 해주십시오. 고맙습니다. – ilFonta

답변

2

감사드립니다. 따라서 "일반적인"data.frame 하위 집합은 동일한 방식으로 작동하지 않습니다. 그것에게 일을하려면 @data 슬롯 부분 집합에 대해 "논리적 확인"을해야합니다 :

shapeOut <- subset(shapeIn, [email protected][,1] == 1) 

또는

shapeOut <- shapeIn[[email protected][,1] == 1,] 

:이 (일부 또는 "직접"색인을 사용 중) 작동합니다 (그러나 최근의 경험에 따르면 열 번호별로 데이터를 참조하는 것은 거의 좋은 아이디어가 아닙니다. ;-))

ciao Giacomo !!!

+0

대단히 감사합니다. Lorenzo. Ciao, un abbraccio !!! – ilFonta

관련 문제