首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按列名作为日期进行数据帧排序

按列名作为日期进行数据帧排序
EN

Stack Overflow用户
提问于 2014-04-09 13:49:43
回答 2查看 1.3K关注 0票数 1

我一直在努力解决这个表面上容易解决的问题,我有一个具有以下列名的数据框架:

代码语言:javascript
复制
  names <-  c("2013-1", "2013-10", "2013-11", "2013-12", "2013-2", 
"2013-3", "2013-4", "2013-5", "2013-6", "2013-7", "2013-8", "2013-9", 
"2014-1", "2014-2", "2014-3")

如您所见,列名是日期(由R识别为字符),我需要重新排序列,以便每一列对应于前一列之后的月份,例如。2013年-1、2013-2、2013-3但由于R将列名视为单词,而不是日期,所以排序不同,比如2013年至2013年之前的第10次。

我尝试使用以下方法转换列名到目前为止:

代码语言:javascript
复制
as.Date(names, format="%Y-%m")

但是R显然不认识这个日期格式,我得到了NA的。我仍然坚持这个订单,无论我尝试什么,所以任何帮助都会非常感谢。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-09 15:30:50

您还可以查看as.yearmon包中的zoo。在帮助文本中:"yearmon是一个用于表示月数据的类。“

代码语言:javascript
复制
library(zoo)
x <- as.yearmon(names, format = "%Y-%m")
x

# sort and format output according to taste, e.g.
format(sort(x), "%Y-%m")
# [1] "2013-01" "2013-02" "2013-03" "2013-04" "2013-05" "2013-06" "2013-07" "2013-08" "2013-09"
# [10] "2013-10" "2013-11" "2013-12" "2014-01" "2014-02" "2014-03"
票数 2
EN

Stack Overflow用户

发布于 2014-04-09 13:54:50

试一试

代码语言:javascript
复制
as.Date(paste(names, "-01", sep=""), format="%Y-%m-%d")

而R应该把它看作是约会。

编辑:如果你想保持原来的格式,但在1到9之间插入一个零,你可以使用strftime

代码语言:javascript
复制
strftime(as.Date(paste(names, "-01", sep=""), "%Y-%m-%d"), "%Y-%m")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22964676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档