2017-02-22 3 views
2

Насколько я могу видеть, это не представляется возможным сделать заказ на коэффициент в 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() интерпретирует виды, как характер, и заказы в алфавитном порядке, а не по фактору.

Что такое простой и безопасный способ обойти это?

+1

Обратите внимание, что SQLite не имеет тип, который соответствует '«фактор»АиР 'класс. он отправляет такие столбцы, как символ '', в базу данных, так что информация о уровне потеряна. По возвращении он преобразует их обратно в коэффициент, если это возможно (если вы не используете 'method =" raw "', в этом случае вы получите символ). –

ответ

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 
Смежные вопросы