使用rows_append()时添加因子水平

fslejnso  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(123)

当我使用rows_append()时,我如何添加额外数据的级别以防止此错误:Error in rows_append():! Can't convert from...
我希望最终结果包括新合并的数据集中的所有级别。
这是复印件

library(dplyr)

data1 <- iris[1:100,] %>%
  droplevels()
data2 <- iris[101:150,] %>%
  droplevels()

dataFull <- data1 %>%
  rows_append(data2)
#> Error in `rows_append()`:
#> ! Can't convert from `y$Species` <factor<23909>> to `x$Species` <factor<44a85>> due to loss of generality.
bjp0bcyl

bjp0bcyl1#

更新删除了第一个答案:(感谢@Axeman):
我们可以合并因子水平,使它们在数据集之间保持一致

library(dplyr)

levels <- union(levels(data1$Species), levels(data2$Species))

data1$Species <- factor(data1$Species, levels = levels)
data2$Species <- factor(data2$Species, levels = levels)

data1 %>% 
  rows_append(data2) %>% 
  str()

'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

相关问题