按sqldf中的因子排序

时间:2017-02-22 12:16:49

标签: r 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解释为一个字符,并按字母顺序排序,而不是按因子排序。

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

1 个答案:

答案 0 :(得分:3)

您可能需要将因子的数值放入数据框中,然后在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