R 按日期排序拆分的类别
假设以下数据集名为df: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/
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