R 在保持名称排序的同时,先按名称再按日期对数据帧进行排序

R 在保持名称排序的同时,先按名称再按日期对数据帧进行排序,r,R,我的数据框架如下: product<-c("asd","saf","asd","bc","asd","saf","bc","saf") date<-as.Date(c("2018-07-29","2018-07-25","2018-07-28","2018-06-29","2018-07-21","2018-07-12","2018-02-28","2018-07-10")) p<-data.frame(product,date) 因为我不关心名称之间的字母排序。使用

我的数据框架如下:

    product<-c("asd","saf","asd","bc","asd","saf","bc","saf")
date<-as.Date(c("2018-07-29","2018-07-25","2018-07-28","2018-06-29","2018-07-21","2018-07-12","2018-02-28","2018-07-10"))
p<-data.frame(product,date)

因为我不关心名称之间的字母排序。

使用
sqldf

library(sqldf)
sqldf("select * from p order by product,date")
输出:

  product       date
1     asd 2018-07-21
2     asd 2018-07-28
3     asd 2018-07-29
4      bc 2018-02-28
5      bc 2018-06-29
6     saf 2018-07-10
7     saf 2018-07-12
8     saf 2018-07-25
  product       date
5     asd 2018-07-21
3     asd 2018-07-28
1     asd 2018-07-29
7      bc 2018-02-28
4      bc 2018-06-29
8     saf 2018-07-10
6     saf 2018-07-12
2     saf 2018-07-25

使用
sqldf

library(sqldf)
sqldf("select * from p order by product,date")
输出:

  product       date
1     asd 2018-07-21
2     asd 2018-07-28
3     asd 2018-07-29
4      bc 2018-02-28
5      bc 2018-06-29
6     saf 2018-07-10
7     saf 2018-07-12
8     saf 2018-07-25
  product       date
5     asd 2018-07-21
3     asd 2018-07-28
1     asd 2018-07-29
7      bc 2018-02-28
4      bc 2018-06-29
8     saf 2018-07-10
6     saf 2018-07-12
2     saf 2018-07-25

基本上考虑了两列的排序:

p[order(p$product,p$date),]
输出:

  product       date
1     asd 2018-07-21
2     asd 2018-07-28
3     asd 2018-07-29
4      bc 2018-02-28
5      bc 2018-06-29
6     saf 2018-07-10
7     saf 2018-07-12
8     saf 2018-07-25
  product       date
5     asd 2018-07-21
3     asd 2018-07-28
1     asd 2018-07-29
7      bc 2018-02-28
4      bc 2018-06-29
8     saf 2018-07-10
6     saf 2018-07-12
2     saf 2018-07-25
我相信这个问题已经重复了。事实上,万一我把它放在这里,它有更多的信息:

基本上考虑了两列的排序:

p[order(p$product,p$date),]
输出:

  product       date
1     asd 2018-07-21
2     asd 2018-07-28
3     asd 2018-07-29
4      bc 2018-02-28
5      bc 2018-06-29
6     saf 2018-07-10
7     saf 2018-07-12
8     saf 2018-07-25
  product       date
5     asd 2018-07-21
3     asd 2018-07-28
1     asd 2018-07-29
7      bc 2018-02-28
4      bc 2018-06-29
8     saf 2018-07-10
6     saf 2018-07-12
2     saf 2018-07-25
我相信这个问题已经重复了。事实上,万一我把它放在这里,它有更多的信息:

如果你想对产品进行排序,那么产品
bc
应该在
saf
之前。我不在乎字母顺序,我只想把所有相同的产品都放在一起。如果你想对产品进行排序,那么产品
bc
应该在
saf
之前。我不在乎字母顺序,我只想要全部相同的产品都在一起。@firmo23:如果我走错了方向,请告诉我。很好的回答,谢谢@如果我走错了方向,请告诉我。很好的回答,谢谢!