2014-09-19 3 views
0

두 개의 데이터 프레임을 병합하려고하지만 병합 된 데이터 프레임의 변수 중 하나에 "필요한"수만 있으면됩니다. 이처럼 : 다음R - 병합 및 결과 계수 수준

df1 <- data.frame(country=c("AA", "BB")) 
df2 <- data.frame(country=c("AA", "BB", "CC"), name=c("Country A", "Country B", "Country C")) 
df3 <- merge(df1, df2, by="country") 

:

내가 기대했던 것입니다
> df3 
    country  name 
1  AA Country A 
2  BB Country B 

.

그러나 2 줄의 데이터 만있는 경우 왜 'name'요소에는 3 가지 수준이 있습니까?

> str(df3) 
'data.frame': 2 obs. of 2 variables: 
$ country: Factor w/ 2 levels "AA","BB": 1 2 
$ name : Factor w/ 3 levels "Country A","Country B",..: 1 2 

df3에서 '국가 C'를 제거하려면 어떻게합니까?

> table(df3) 
     name 
country Country A Country B Country C 
    AA   1   0   0 
    BB   0   1   0 

답변

1

당신은 시도 할 수 있습니다 : 여기

table(droplevels(df3)) 
#   name 
#country Country A Country B 
# AA   1   0 
# BB   0   1 

df2$name의 수준은 삭제되지 않습니다 당신이 merge을 할 수있다. 내가 나를 더 문제를 이해하는 데 도움 다른 참조를 찾을 수 있었다이 답변에

df3$name <- factor(df3$name) 
table(df3) 
#  name 
#country Country A Country B 
# AA   1   0 
# BB   0   1 
+0

감사합니다, 같은 : http://stackoverflow.com/questions/1195826/dropping-factor- 또 다른 방법은하는 것 서브 세트 화 된 데이터 프레임 - 레벨 -r-rq = 1 –