我有20年的气象数据,但我只对每年的模式感兴趣。例如,我不关心1995年6月与2011年6月的差异。相反,我想要6月1日的20个值,6月2日的20个值等等。
我的问题:如何去掉日期对象中的年份部分,保留月份和日期,并同时保持日期的顺序属性?我的最终目标是一个长列表,其中重复的mm/dd值对应于结果变量。我将把mm/dd视为因子,但按正确的顺序排列。
# Given this:
as.Date(c("2014-06-01","1993-06-01", "2013-06-03", "1999-01-31"), "%Y-%m-%d")
# I want to get this:
"06-01" "06-01" "06-03" "01-31"
# That will sort like this
"01-31" "06-01" "06-01" "06-03"
使用sub()函数去除年份并将破折号转换为小数等类似的小技巧是不可行的,因为这样每个月的第一天就会和第十天相同。我还尝试将日期转换为字符字符串,删除年份,然后再将其转换回日期......但结果所有日期都变成2014年。
lubridate
包中的yday
函数,该函数返回一年中某天的索引。lubridate
中的其他功能也可能有所帮助,值得一试。 - Spacedmandplyr::arrange()
进行排序。 - NicChr