我试图总结客户的销售报告,并获得不同时期的总销售额:
Client Q Sales Date
A 2 30 01/01/2014
A 3 24 02/01/2014
A 1 10 03/01/2014
B 4 10 01/01/2014
B 1 20 02/01/2014
B 3 30 03/01/2014
我可以使用ddply
来总结客户:
rapport <- ddply(df, CLIENT, summarise,
Q = sum(Q),
Sales = sum(Sales) )
Client Q Sales
A 6 64
B 7 60
我想在03/01/2014
日期添加额外的销售列Client Q Sales Sales03/01/2014
A 6 64 10
B 7 60 30
答案 0 :(得分:0)
DF <- read.table(text=" Client Q Sales Date
A 2 30 01/01/2014
A 3 24 02/01/2014
A 1 10 03/01/2014
B 4 10 01/01/2014
B 1 20 02/01/2014
B 3 30 03/01/2014", header=TRUE)
library(plyr)
ddply(DF, .(Client), summarise,
Q = sum(Q),
`Sales03/01/2014` = Sales[Date=="03/01/2014"],
Sales = sum(Sales))
# Client Q Sales03/01/2014 Sales
#1 A 6 10 64
#2 B 8 30 60
请注意,如果您希望输出的名称与输入Sales
相同,则评估顺序非常重要。此外,最好避免使用无效语法的名称。
答案 1 :(得分:0)
您还可以使用dplyr
获得相同的结果:
library(dplyr)
DF %>%
group_by(Client) %>%
summarise(SumOfQ = sum(Q)
`Sales03/01/2014` = Sales[Date=="03/01/2014"],
SumOfSales = sum(Sales))
dplyr
对于示例案例来说速度较慢,但对于大型数据帧来说要快得多。