R数据框:在公共行中添加值

Din*_*air 2 r list dataframe

我有这样的数据框.

> df1
  portfolio       date ticker quantity price
1      port 2010-01-01   AAPL      100    10
2      port 2010-01-01   AAPL      200    10
3      port 2010-01-01   AAPL      400    11
Run Code Online (Sandbox Code Playgroud)

如果df1except 的行quantity相同,则添加quantity公共行.我的意思是,我需要以下输出

portfolio       date ticker quantity price
1      port 2010-01-01   AAPL      300    10
3      port 2010-01-01   AAPL      400    11
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢..

jub*_*uba 5

干得好... :-)

用于plyr:

ddply(df, .(portfolio, date, ticker, price),summarize, quantity=sum(quantity))
Run Code Online (Sandbox Code Playgroud)

用于data.table:

dt <- data.table(df)
dt[,list(quantity=sum(quantity)),by=list(portfolio,date,ticker,price)]
Run Code Online (Sandbox Code Playgroud)

可能有一种更简洁的方式来表达分组变量列表.否则,aggregate解决方案更加优雅.