2014-09-19 185 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行數據,爲什麼有3個因子'name'級別?

> 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-水平-IN-A-子集數據幀-在-R?RQ = 1 – 2014-09-19 18:52:19