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

时间:2013-09-20 10:36:36

标签: 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

如果除df1之外的quantity行相同,则添加quantity个公共行。 我的意思是,我需要以下输出

portfolio       date ticker quantity price
1      port 2010-01-01   AAPL      300    10
3      port 2010-01-01   AAPL      400    11

我该怎么做?感谢..

2 个答案:

答案 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.tableddply版本填充答案列表....