我有这样的数据框。
> 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
如果除df1
之外的quantity
行相同,则添加quantity
个公共行。
我的意思是,我需要以下输出
portfolio date ticker quantity price
1 port 2010-01-01 AAPL 300 10
3 port 2010-01-01 AAPL 400 11
我该怎么做?感谢..
答案 0 :(得分:5)
你去......: - )
plyr
:
ddply(df, .(portfolio, date, ticker, price),summarize, quantity=sum(quantity))
data.table
:
dt <- data.table(df)
dt[,list(quantity=sum(quantity)),by=list(portfolio,date,ticker,price)]
可能有一种更简洁的方式来表达分组变量列表。否则,aggregate
解决方案会更加优雅。
答案 1 :(得分:4)
使用aggregate
。假设您的data.frame
被称为“mydf”:
> aggregate(quantity ~ ., mydf, sum)
portfolio date ticker price quantity
1 port 2010-01-01 AAPL 10 300
2 port 2010-01-01 AAPL 11 400
当然,我们现在应该等待data.table
和ddply
版本填充答案列表....