据我所见,无法按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解释为一个字符,并按字母顺序排序,而不是按因子排序。
解决此问题的简单而安全的方法是什么?
答案 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