假设以下名为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)我尝试了df3 <- df2order(df2$Date),但是这给了我一个错误,即参数1不是一个向量(有意义)。
有没有办法按日期对每个拆分的类别进行排序?一般来说,拆分函数允许我在每个拆分的类别上执行功能吗?请注意,我的真实数据集包含超过1000个产品类别。
发布于 2015-08-25 23:36:31
如果您不需要产品保持拆分,您也可以使用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发布于 2015-08-26 04:04:40
一个基本的R解决方案。我使用lubridate将Date列转换为Date,但是如果您的数据已经是一种数据格式,则不需要执行此步骤。您的代码无法工作,因为split返回一个列表;为了编写有意义且正常工作的代码,您必须遍历列表,并对列表中每个元素(这是Product的一个数据框)的每一列Date进行排序。
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-02https://stackoverflow.com/questions/32207919
复制相似问题