2011-12-15 16 views
0

我有一個包含多列的數據框。我想根據包含正數和負數的列之一對數據框進行排序。的問題是,在plyr包的安排功能進行排序以下面的方式將柱:基於具有負數和正數的列對數據框排序

-0.02 -0.03 -0.06 -0.5 -1 -2 -4 0.01 0.7 0.9 1.2

正如你所看到的,這並不真正排序的數字,從最低到最高。是否有任何功能或包能夠按照正確的順序對正數和負數進行排序,就像您在實際的號碼行上一樣?

+1

請重複舉例,您有足夠的數據來顯示您聲稱發生了什麼。 – mdsumner

回答

3

因爲他們存儲在data.frame,我不認爲他們是數字。我想象那個專欄是一個因素,它的層級字符串看起來像數字。比較:

nums <- c(-0.02, -0.03, -0.06, -0.5, -1, -2, -4, 0.01, 0.7, 0.9, 1, 1.2) 
dat <- data.frame(nums) 
arrange(dat, nums) 

這給

nums 
1 -4.00 
2 -2.00 
3 -1.00 
4 -0.50 
5 -0.06 
6 -0.03 
7 -0.02 
8 0.01 
9 0.70 
10 0.90 
11 1.00 
12 1.20 

與它是一個因素

dat2 <- data.frame(nums=factor(as.character(nums))) 
arrange(dat2, nums) 

,讓你看到

nums 
1 -0.02 
2 -0.03 
3 -0.06 
4 -0.5 
5  -1 
6  -2 
7  -4 
8 0.01 
9 0.7 
10 0.9 
11  1 
12 1.2 

如果你看一下訂貨的情況下您的0的,我敢打賭你會發現那一欄是一個因素。