使用 R 中的 dplyr 对对象内的日期进行排序

Sorting dates within objects using dplyr in R

我有以下数据:

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),]

  })

我收到错误:

Error in UseMethod("as.quoted") : no applicable method for 'as.quoted' applied to an object of class "function"

我正在努力了解我做错了什么。有人可以帮忙吗?

我最好的猜测是 plyr 解决方案,使用 ddply,并使用 Year 而不是 date:

require(plyr)

ddply(df, "Number", function(datesort) datesort[order(datesort$Year),])

但是考虑到这个 post 被标记为 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)