用计数或汇总对R中的月份进行排序

时间:2018-10-18 13:48:10

标签: r

我正在尝试使用R对月份进行排序,并具有以下内容:

redux

这与monts和订单数有关。但是,月份不能按月正确排序。如何按月正确排序?

我已经尝试使用“ order”和“ factor”,但是这不能正常工作。我如何正确使用短代码并正确订购?

谢谢

罗兰

3 个答案:

答案 0 :(得分:1)

要做:

months()

因为 <label for="firstname">First Name:</label><input id="firstname" name="firstname" type="text" autofocus placeholder="John" required="required" maxlength="15" /> <br> <label for="surname">Surname:</label><input id="surname" name="surname" type="text" placeholder="Smith" required="required" maxlength="30" /> <br> <br> Gender: <input id="male" type="radio" name="gender" value="male" /><label for="male">Male</label> <input id="female" type="radio" name="gender" value="female" /><label for="female">Female</label> <input id="prefernotsay" type="radio" name="gender" value="prefernotsay" checked /><label for="prefernotsay">Prefer Not to Say</label> <br> <input id="submit" type="submit" value="submit" /> <br> </form> “返回使用的语言环境中[月份]名称的字符向量” ,并且比硬编码美国/英文月份名称的方法更不容易

答案 1 :(得分:0)

由于您没有提供示例数据,因此我无法测试它是否确实适用于您的特定情况。将您的月份数据转换为因子是可行的,但是您必须首先指定月份的名称(使用数据的语言),因为R不知道您希望如何对它们进行排序。因此,在不定义级别的情况下创建因子只会导致字母顺序出现,这几个月以来都是不正确的。

library(dplyr)

result <- mydata %>%
  mutate(ordered_months = factor(months(as.Date(orderdate)), 
                                 levels=c("January", "February", ...))) %>% # insert all month-names here
  count(ordered_months)
result

...应该工作。

答案 2 :(得分:0)

以下内容假设您的语言环境会说英语。这是因为内置变量month.name使用英语月份名称。

首先,组成一个数据集,因为您尚未发布数据集。

set.seed(1)
d <- seq(as.Date("2017-01-01"), Sys.Date(), by = "month")
mydata <- data.frame(orderdate = sample(d, 1e2, TRUE))

现在是问题所在。请注意,order是它自己的逆,即答案使用的事实。

library(dplyr)
library(lubridate)


result <- mydata %>%
  count(months(as.Date(orderdate)))

inx <- order(month.name)
result[order(inx), ]