df <- data.frame(
cola = c('a','b','c','d','e','e','1',NA,'c','d'),
colb = c("A",NA,"C","D",'a','b','c','d','c','d'),stringsAsFactors = FALSE)
#equal 2 dataframe
df2<-df
df['cola'] <- lapply(df['cola'], function(x) droplevels(factor(x,levels=c('a','b','c','d','e','f','1'),ordered = FALSE)))
df2['cola'] <- lapply(df2['cola'], function(x) factor(x,ordered = FALSE))
#should be eqaul
dplyr::all_equal(df,df2)
#check levels
levels(df$cola)
levels(df2$cola)
Вывод приведенного выше сценария:
> dplyr::all_equal(df,df2)
[1] "Factor levels not equal for column `cola`"
> levels(df$cola)
[1] "a" "b" "c" "d" "e" "1"
> levels(df2$cola)
[1] "1" "a" "b" "c" "d" "e"
Что касается ordered = FALSE
, "a" "b" "c" "d" "e" "1"
должно быть равно "1" "a" "b" "c" "d" "e"
Почему all_equal
подскажите Factor levels not equal
?
Как сравнить эти 2 факторных уровня, чтобы они были равны?