我有以下格式的数据框:
<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年的顺序,但是连胜组按升序排序,即使它们是括号,也不能表示为真正的整数。
答案 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
课程。