0

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

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 个级别?

> 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
4

1 回答 1

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
于 2014-09-19T18:10:39.990 回答