在tidyverse中按时间顺序排序月份名称

时间:2017-10-27 20:00:20

标签: r sorting dplyr tidyverse

因此,我已经阅读了许多方法,可以通过基本R或通过tidyverse方法对其名称进行排序,但所有方法都需要用户定义的函数和一些非常冗长的语言。

这是一个例子: Sorting month chronologicaly with arrange() from dplyr

这几乎是涉及日期或时间的任何分析的基本需求。 Surly必须有一个函数,比如arrange()with" calendar" (也许是descd-calendar)论点。还是我错过了什么?

2 个答案:

答案 0 :(得分:4)

也许根据month.name中的位置排列,可以在match(months, month.name)找到?

df <- data.frame(months = sample(month.name, 5))
df
#     months
#1 September
#2      July
#3  December
#4  February
#5   January

df %>% arrange(match(months, month.name))
#     months
#1   January
#2  February
#3      July
#4 September
#5  December

答案 1 :(得分:0)

您可以将它们转换为Date,然后对它们进行排序。

library(anydate); library(dplyr);
c('January', 'February', 'December', 'June') %>% anydate %>% sort 

如果你想把它们保存为字符串,你可以使用Psidom的方法或

c('January', 'February', 'December', 'June') %>% (function(x) x[x %>% anydate %>% order])