如何使用类似字符串的整数来订购数据框列?

时间:2014-06-26 19:22:06

标签: r

我有以下格式的数据框:

<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
...            

问题在于&#34;连胜&#34;列排序不正确,因为按字符串排序会使&#34; 1 - 2年&#34;之前&#34; 11-50天&#34;。

订购此数据框的情感方式是什么,以便加入的年份仍然是从2012年到2014年的顺序,但是连胜组按升序排序,即使它们是括号,也不能表示为真正的整数。

1 个答案:

答案 0 :(得分: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课程。