在 sqldf 中按因子排序

order by factor in sqldf

据我所知,无法在 sqldf 中按因子排序:

levels( iris$Species )  <- c("virginica", "versicolor", "setosa")
levels(iris$Species)

> sqldf(' select  distinct iris.[Species] from iris order by iris.[Species] ' )
     Species
1     setosa
2 versicolor
3  virginica

上面的输出显示 sqldf() 将 Species 解释为字符,并按字母顺序排序,而不是按因子排序。

解决此问题的简单而安全的方法是什么?

您可能需要将因子的数值放入数据框中,然后在 sqldf 中对其进行排序:

> iris$fnum = as.numeric(iris$Species)
> sqldf(' select iris.[Species] from iris group by iris.[Species] order by iris.fnum')
     Species
1  virginica
2 versicolor
3     setosa