【发布时间】:2016-05-23 21:49:06
【问题描述】:
我有一个数据框 DF,其中有一列 Month 作为字符串,使用月份的全英文名称,一列 Year 作为数字:
Year Month {several xi}
2016 April {numeric}
我需要将几个 xi 绘制为时间序列。从最早的月份(2015 年 1 月)到现在,对这个数据框进行排序的最有效方法是什么?我尝试使用as.Date 将“月份”转换为日期分类对象并没有按我的意愿工作;他们不断回来按字母顺序排序。
抱歉,如果这是一个菜鸟问题,但运气不好,我在 R 职业生涯中不必经常使用日期类对象,所以我不确定我看到的各种类似问题中的哪些可以帮帮我。
【问题讨论】:
-
month.name是一个内置常量,月份顺序正确。只需执行df$Month = factor(df$Month, levels = month.name)即可创建具有正确排序的因子。然后你可以df[order(df$Year, df$Month), ]。 -
如果没有一天,您将无法将其设为
Date- 您可以在当天使用1。您可以使用zoo包的yearmon类,几乎完全是as in this question,但您需要使用%B而不是%m,因为您有未缩写的月份名称。有关其他日期部分通配符,请参阅?strptime。