在 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
据我所知,无法在 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