我想合并两个数据帧,但得到的合并数据帧在其中一个变量中只有“必要”的级别数。 像这样:
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
答案 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