r - 在 R 中使用 dplyr 对对象内的日期进行排序
问题描述
我有以下数据:
Number Year
1 2001-01-01
1 2001-02-01
1 2002-03-01
1 2001-03-01
1 1999-07-01
2 2001-01-01
2 2001-02-01
2 2002-03-01
2 2001-03-01
2 1999-07-01
3 2001-01-01
3 2001-02-01
3 2002-03-01
3 2001-03-01
3 1999-07-01
现在我需要对每个数字中的日期进行排序。我希望我的最终输出看起来像这样。
Number Year
1 1999-07-01
1 2001-01-01
1 2001-02-01
1 2001-03-01
1 2002-03-01
2 1999-07-01
2 2001-01-01
2 2001-02-01
2 2001-03-01
2 2002-03-01
3 1999-07-01
3 2001-01-01
3 2001-02-01
3 2001-03-01
3 2002-03-01
这是我的数据的简化形式。我尝试使用 dplyr。
这是我的代码:
df <- ddply(df, by = 'Number', function(datesort){
datesort[order(datesort$date),]
})
我得到错误:
UseMethod(“as.quoted”)中的错误:没有适用于“as.quoted”的方法应用于“函数”类的对象
我试图了解我做错了什么。有人可以帮忙吗?
解决方案
我对你想要的最好的猜测是一个plyr
解决方案,使用ddply
,并使用Year
而不是date
:
require(plyr)
ddply(df, "Number", function(datesort) datesort[order(datesort$Year),])
但是鉴于这篇文章被标记为dplyr
,这里有一个dplyr
解决方案:
require(tidyverse)
df %>% arrange(Number, Year)
两种解决方案都输出:
Number Year
<int> <date>
1 1 1999-07-01
2 1 2001-01-01
3 1 2001-02-01
4 1 2001-03-01
5 1 2002-03-01
6 2 1999-07-01
7 2 2001-01-01
8 2 2001-02-01
9 2 2001-03-01
10 2 2002-03-01
11 3 1999-07-01
12 3 2001-01-01
13 3 2001-02-01
14 3 2001-03-01
15 3 2002-03-01
数据:
zz <-"Number Year
1 2001-01-01
1 2001-02-01
1 2002-03-01
1 2001-03-01
1 1999-07-01
2 2001-01-01
2 2001-02-01
2 2002-03-01
2 2001-03-01
2 1999-07-01
3 2001-01-01
3 2001-02-01
3 2002-03-01
3 2001-03-01
3 1999-07-01"
df <- read.table(text=zz, header=TRUE)
推荐阅读
- java - 为什么我在通过 RoboVM 在 ARKit 中使用命中测试时会得到错误的位置坐标?
- image - OpenCL:内核从 INT_16 图像中读取插值
- windows - 从命令行设置 WScript 会话标题
- swift - 如何在 Swift 中枚举简写的字典(或转换字典的所有键类型)?
- logstash - 在 Lostash 的 beats.config 中自定义来自 filebeat 的日志
- ssl - 无法运行作曲家命令。SSL:对等方重置连接
- python - 矩阵中列的最大值列表(没有 Numpy)
- ajax - 我来自数据库的数据即将到来(因为它显示了我的表单之外的数据),但没有通过 AJAX 显示。在适当的位置
- android - 在循环中使用动态数据克隆/复制 XML 线性布局 - Android Studio
- cmd - 如何在 Windows 命令行中用百分比替换空格字符?