按字符和日期列对数据框进行排序
Posted
技术标签:
【中文标题】按字符和日期列对数据框进行排序【英文标题】:Sort data frame by character and date columns 【发布时间】:2014-05-08 15:37:59 【问题描述】:我正在尝试按字符列(降序)和日期变量(升序)对简单数据集进行排序。
fx_code date fx_spot
1 AUD 2000-01-31 0.6370
2 AUD 2000-02-29 0.6178
3 AUD 2000-03-31 0.6071
4 AUD 2000-04-28 0.5839
5 AUD 2000-05-31 0.5725
当我运行以下代码时
DF$date <- as.Date(DF$date, format = "%Y-%m-%d")
DF <- DF[order(DF$fx_code,-DF$date),]
我收到以下错误:
-.Date
(DF$date) 中的错误:一元 - 未为“日期”对象定义
【问题讨论】:
【参考方案1】:as.numeric
会更容易理解:
DF <- DF[order(DF$fx_code, - as.numeric(DF$date)), ]
在幕后,xtfrm
实际是这样做的:
> xtfrm(as.Date('2000-04-29', format='%Y-%m-%d'))
[1] 11076
> as.numeric(as.Date('2000-04-29', format='%Y-%m-%d'))
[1] 11076
【讨论】:
我要不要在as.numeric
之前添加as.Date
到订购前的日期?【参考方案2】:
试试这个:
DF <- DF[order(DF$fx_code, - xtfrm(DF$date)), ]
【讨论】:
【参考方案3】:你也可以
rev(order(date_field))
DF <- DF[rev(order(DF$date))]
【讨论】:
以上是关于按字符和日期列对数据框进行排序的主要内容,如果未能解决你的问题,请参考以下文章