R - 合并并产生因子水平

时间:2014-09-19 18:08:34

标签: r merge levels

我想合并两个数据帧,但得到的合并数据帧在其中一个变量中只有“必要”的级别数。 像这样:

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中的'Country C'?

> table(df3)
       name
country Country A Country B Country C
     AA         1         0         0
     BB         0         1         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