【发布时间】:2018-01-19 00:43:28
【问题描述】:
我在 R 中有一个日期和数值的数据框。日期都是一个月的第一天,并且值是与该月关联的数字
library(DT)
library(dplyr)
df <- data.frame(date = as.Date(c("2017-01-01","2017-02-01","2017-03-01","2017-04-01")),
val = c(-5600,7000,4200,-2000))
我想通过DT::datatable() 坚持下去,这是我最喜欢的新事物。但是,我希望输出格式正确,千位分隔符,漂亮的日期等。
df <- df %>% mutate(val = formatC(val, big.mark=","))
datatable(df)
这会将val 转换为字符向量,尽管datatable() 显然能够识别它实际上是一个数字并使用标题中的箭头进行适当的排序。到目前为止一切顺利。
但是,当我尝试将日期格式化为 MMM YY 时,问题就出现了。
df <- df %>% mutate(date = format(date, "%b %y"))
datatable(df)
这也将日期转换为字符向量 - 值看起来像“Jan 17”等。一切看起来都很好,唯一的问题是当我按 date 排序时,它不会将值识别为月份并且将它们按字母顺序而非时间顺序排列。
有没有办法在将日期传递给datatable() 之前或同时重新格式化日期,以保持变量的“日期性”并允许对其进行适当排序?如果做不到这一点,是否还有另一个输出交互式表格并且更擅长排序的包?
提前致谢,
詹姆斯
【问题讨论】:
-
我认为您应该避免更改数据列的类,而是构建一个您将在任何输出时使用的打印方法。
标签: r sorting date formatting