2014-06-26 21 views
1

我有以下格式的数据帧:如何使用字符串等整数对数据框列进行排序?

<year joined>, <win streak>, <points> 
2012   0-10 days  xxx 
2013   0-10 days  xxx 
2014   0-10 days  xxx 
2012   1-2 years  xxx 
2013   1-2 years  xxx 
2014   1-2 years  xxx 
2012   11-50 days xxx 
2013   11-50 days xxx 
2014   11-50 days xxx 
...    

的问题是,因为字符串排序,使“1 - 2年”之前“11-50天”中的“连胜”列排序不正确。

什么是订购这个数据框的一种情感方式,所以加入的年份仍然是从2012年到2014年的顺序,但是连胜组按照升序排列,尽管它们是括号,并且不能表示作为真正的整数。

回答

3

生成假数据

z = as.factor(sample(c("0-10 Days", "11-50 Days", "1-2 Years"), 20, replace = TRUE)) 
z 
    [1] 0-10 Days 0-10 Days 11-50 Days 0-10 Days 0-10 Days 11-50 Days 11-50 Days 1-2 Years 
    [9] 11-50 Days 1-2 Years 0-10 Days 11-50 Days 11-50 Days 0-10 Days 1-2 Years 11-50 Days 
    [17] 1-2 Years 1-2 Years 0-10 Days 0-10 Days 

定义级别

levels(z) = c("0-10 Days", "11-50 Days", "1-2 Years") 
sort(z) 
    [1] 0-10 Days 0-10 Days 0-10 Days 0-10 Days 0-10 Days 0-10 Days 0-10 Days 0-10 Days 
    [9] 11-50 Days 11-50 Days 11-50 Days 11-50 Days 11-50 Days 11-50 Days 11-50 Days 1-2 Years 
    [17] 1-2 Years 1-2 Years 1-2 Years 1-2 Years 
    Levels: 0-10 Days 11-50 Days 1-2 Years 

如果你想跟踪的时候,你可以用POSIXlt类代替。

相关问题