#r
#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
...
Проблема в том, что столбец «серия побед» упорядочен неправильно, потому что сортировка по строке составляет «1-2 года» до «11-50 дней».
Каков был бы эффективный способ упорядочить этот фрейм данных, чтобы присоединенный год по-прежнему соответствовал порядку 2012-2014 годов, но чтобы группы победных серий упорядочивались в порядке возрастания, даже если они являются скобками и не могут быть представлены как истинные целые числа.
Ответ №1:
Генерировать поддельные данные
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
вместо этого использовать class .