簡體   English   中英

R中data.frame中sort()如何工作

[英]How does sort() work in data.frame within R

sort工作方式,即使用哪種方法對列進行排序

data.frame (barley$site, barley$year, barley$variety)

如下

library(lattice)
barley <- barley[order(barley$site, barley$year, barley$variety), ] 

您可能想要:

barley[order(as.character(barley$site), as.numeric(barley$year), as.character(barley$variety)),] 

有了它,您就可以按data.frame的基礎級別進行排序,這會導致真正的奇怪事情。 看一下數據框的結構:

 'data.frame':  120 obs. of  4 variables:
 $ yield  : num  27 48.9 27.4 39.9 33 ...
 $ variety: Factor w/ 10 levels "Svansota","No. 462",..: 3 3 3 3 3 3 7 7 7 7 ...
 $ year   : Factor w/ 2 levels "1932","1931": 2 2 2 2 2 2 2 2 2 2 ...
 $ site   : Factor w/ 6 levels "Grand Rapids",..: 3 6 4 5 1 2 3 6 4 5 ...

注意year的水平與您期望的相反。 order文檔對此進行了簡要討論:

對於因子,這是根據內部代碼排序的,這特別適用於有序因子。

我個人認為這非常令人困惑,但這就是事實。 因素在大多數情況下都非常有用,但是如果您不小心的話,在其他情況下則非常危險。 用數字表示因素(如此處的year )特別糟糕。

有關更多詳細信息,請參見?factor

默認情況下, sort不知道如何對數據框執行任何操作。 您可以使用df$x <- sort(df$x)之類的方式對數據框中的各個列進行df$x <- sort(df$x)但是幾乎可以肯定,您不會這樣做。 它只會弄亂您的數據。

您可以通過使用order來對數據框中的行進行order就像那里的示例代碼一樣。 這將按列site的值對行進行排序,先中斷與year聯系,然后再更改其variety

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM