在Dataframe中按月和年排序

时间:2018-03-02 21:47:52

标签: r dataframe

我在R中按月/年格式排序时遇到问题 我有%m/%Y格式的数据,但尝试使用

df_prod<-df_prod[order(as.Date(df_prod$date,format="%m/%Y")),]

数据框没有排序。我得到了一个类似文本的订单(01 / 2000,01 / 2001,01 / 2002)

其他细节: 我正在对dplyr格式排序良好的数据框执行%m/%Y聚合:

df_prod<-df %>%
  group_by(date,comp_id) %>%
  summarise(a_prod=prod(1+TRT)-1)

谢谢

2 个答案:

答案 0 :(得分:1)

由于@lmo已经提到仅使用%m/%Y不会创建有效日期。一种解决方案是使用as.yearmon包中的zoo

library(zoo)    
df_prod<-df_prod[order(as.yearmon(df_prod$date,format="%m/%Y")),]

答案 1 :(得分:0)

%m/%Y是一个棘手的约会起始格式,如果这是您最终需要的:

从字符串中获取日期组件:

aa <- format(Sys.Date(), "%m/%Y")
m <- as.numeric(substr(aa, 1, 2))
y <- as.numeric(substr(aa, 4, 8))

然后,您可以将它们粘贴到日期格式中并排序:

as.Date(paste(y, "-", m, "-01", sep = ''))