R 按日期排序拆分的类别

R 按日期排序拆分的类别,r,split,R,Split,假设以下数据集名为df: Product Quantity Date X 1 15/3/2015 Y 2 16/4/2014 X 1 21/5/2015 X 2 11/12/2014 Z 1 2/10/2015 Y 1 17/5/2014 Z 2 18/5/2014 Z 1 6/5/

假设以下数据集名为df:

Product Quantity Date

X       1        15/3/2015
Y       2        16/4/2014
X       1        21/5/2015 
X       2        11/12/2014
 Z      1        2/10/2015 
Y       1        17/5/2014 
Z       2        18/5/2014
Z       1        6/5/2015
Y       2        9/6/2014
我想根据不同的产品类别拆分数据框,然后按日期对每个类别进行排序

df2 <- split(df, df$Date)

df2如果您不需要继续拆分产品,也可以使用
dplyr
执行此操作

df$Date <- as.Date(as.character(df$Date), "%d/%m/%Y")

library(dplyr)
df %>%
    group_by(Product) %>%
    arrange(Date)


Source: local data frame [9 x 3]
Groups: Product

  Product Quantity       Date
1       X        2 2014-12-11
2       X        1 2015-03-15
3       X        1 2015-05-21
4       Y        2 2014-04-16
5       Y        1 2014-05-17
6       Y        2 2014-06-09
7       Z        2 2014-05-18
8       Z        1 2015-05-06
9       Z        1 2015-10-02
df$Date%
组别(产品)%>%
安排(日期)
来源:本地数据帧[9 x 3]
组别:产品
产品数量日期
1x2 2014-12-11
2x1 2015-03-15
3x12015-05-21
4 Y 2 2014-04-16
5 Y 1 2014-05-17
6 Y 2 2014-06-09
7 Z 2 2014-05-18
8 Z 1 2015-05-06
9 Z 1 2015-10-02

基本的R解决方案。我使用了
lubridate
Date
列转换为Date,但如果您的数据已经是数据格式,则不需要此步骤。 您的代码不工作,因为
split
返回一个列表;为了使代码有意义并能正常工作,您必须在列表中循环,并对列表中每个元素的每一列
日期
(即
产品的数据框)进行排序

库(lubridate)
df$日期
library(lubridate)
df$Date <- dmy(df$Date)

dfs <- split(df, df$Product)
lapply(dfs, function(x) x[order(x$Date), ] )
$X
Product Quantity       Date
4       X        2 2014-12-11
1       X        1 2015-03-15
3       X        1 2015-05-21

$Y
Product Quantity       Date
2       Y        2 2014-04-16
6       Y        1 2014-05-17
9       Y        2 2014-06-09

$Z
Product Quantity       Date
7       Z        2 2014-05-18
8       Z        1 2015-05-06
5       Z        1 2015-10-02