2014-05-14 2 views
2

변수 중 하나가 등록 국가 인 표가 있습니다. 나는 국가 중 하나를 제외R은 내가 특정 유형의 항목이 없다는 것을 어떻게 알 수 있습니까?

df_subset<-subset(df, reg_country!='AR') 
table(df_subset$reg_country) 

반환하는 원래의 테이블을 부분 집합 경우 지금

AR BR ES FR IT 
    123 202 578 642 263 

, :

table(df$reg_country) 

반환

AR BR ES FR IT 
    0 202 578 642 263 

이 두 번째 결과는 나에게 매우 놀랍다. R은 어떻게 든 AR에서 엔트리를 제거했음을 마술처럼 생각하는 것 같습니다.

왜 이런 일이 발생합니까?

두 번째 데이터 프레임 (df_subset)의 크기에 영향을 줍니까? '예'일 경우 크기를 최소화하기 위해 하위 집합을 만드는 더 효율적인 방법이 있습니까?

+4

당신의'reg_country' 변수는 아마도'factor'이고, 그것을 부분 집합함으로써 당신은 행들을 제거하지만, 정의 된 요소 레벨 (AR을 포함합니다)은 제거하지 못합니다. 그리고 '테이블'은 모든 정의 된 요소 수준을 보여줍니다. –

답변

7

df$reg_country은 요소 변수이며 levels 속성의 모든 가능한 수준의 정보를 포함합니다. levels(df_subset$reg_country)을 확인하십시오.

팩터 레벨은 엄청나게 많은 데이터 크기에만 큰 영향을 미칩니다. 나는 그것이 사실 이길 것이라고 기대하지 않는다. 그러나 사용하지 않은 레벨을 제거하려면 droplevels(df_subset$reg_country)을 사용할 수 있습니다.

+0

간단하고 직설적입니다. 감사 Roland! –