2014-04-22 50 views
0

我想基於其中一行重新排列因子。例如,我想根據以下2014年條目對應的值對「國家」因素進行重新排序。英國將排名第一,美國第二。我如何重新排列因子

dat <- data.frame(
    country=c("USA","USA","UK","UK"), 
    year=c(2014,2013,2014,2013), 
    value=c(2,NA,1,NA) 
)  

    country year value 
1  USA 2014  2 
2  USA 2013 NA 
3  UK 2014  1 
4  UK 2013 NA 

我不太明白因素是如何重新排序的。看起來reorder命令替換data.frame中的整個列,但我認爲我只需要爲factor標籤指定一個新訂單。 「水平」似乎恰恰相反,給訂單貼上標籤。

回答

2

也許這:

factor(dat$country, levels=with(dat[dat$year==2014,], country[order(value)])) 
#[1] USA USA UK UK 
#Levels: UK USA 
+0

偉大的作品,謝謝! – user492922

0
factor(country<-c("USA","USA","UK","UK"),level <- c("UK","USA")) 
sort(country)