如果值具有相同的ID,则通过求和来压缩数据行

时间:2018-12-10 16:13:23

标签: r

AS 400生成计划表时,我的数据通常是什么样子

 df <- data.frame(
   Date = c(rep("Dec 4", 10)),
   Line = c(rep(1,7),rep(2,3)),
   Style = c(rep(24510,7),rep(18605,3)),
   Qty = c(1,1,3,1,2,1,1,2,1,3))  

这就是我希望数据显示的样子。如果您注意到,则样式号为24510的行没有压缩为一行,数量为10。在此之前,有7个单独的行具有不同的数量。

 df_goal <- data.frame(
   Date_goal = c(rep("Dec 4", 2)),
   Line_goal = c(1,2), 
   Style_goal = c(24510,18605),
   Qty_goal = c(10,6))  

2 个答案:

答案 0 :(得分:1)

使用dplyr

非常容易
library(dplyr)

df_goal<-df %>% 
            group_by(Date,Line, Style ) %>% 
            summarize(Qty=sum(Qty)) %>%
            rename(Date_Goal =Date, Line_Goal=Line, Style_Goal=Style, Qty_Goal= Qty)

答案 1 :(得分:0)

如果您只想要总数,这是最简单的:

plyr::count(df, vars=c('Date', 'Line', 'Style'), wt_var = 'Qty')

如果还没有plyr软件包,请先运行install.packages('plyr')