R 如何根据特定条件合并数据帧和更改元素值?

R 如何根据特定条件合并数据帧和更改元素值?,r,merge,dataframe,R,Merge,Dataframe,下面是我想合并的两个数据帧的示例 portfolio_cost portfolio_value portfolio_return holding_period closedate stock 2013-11-19 36.21 37.58 0.037834852 7 2013-11-29 MSFT 2013-12-12 36.68 36.90 0.00

下面是我想合并的两个数据帧的示例

           portfolio_cost portfolio_value portfolio_return holding_period  closedate stock
2013-11-19          36.21           37.58      0.037834852              7 2013-11-29  MSFT
2013-12-12          36.68           36.90      0.005997819              9 2013-12-26  MSFT
2014-03-14          37.44           39.27      0.048878205              2 2014-03-18  MSFT
2014-04-10          39.08           40.58      0.038382805             11 2014-04-28  MSFT
2014-05-02          39.41           40.42      0.025628013              7 2014-05-13  MSFT

           portfolio_cost portfolio_value portfolio_return holding_period  closedate stock
2013-11-07          72.37           74.59       0.03067569              5 2013-11-14  AAPL
2013-12-18          77.78           80.51       0.03509900              3 2013-12-23  AAPL
2014-01-03          76.40           79.23       0.03704188              5 2014-01-10  AAPL
2014-04-04          75.55           77.42       0.02475182              1 2014-04-07  AAPL
2014-05-09          83.65           86.37       0.03251644              6 2014-05-19  AAPL
2014-06-20          90.91           92.93       0.02221978              6 2014-06-30  AAPL
我想做的是将两个数据帧以某种方式连接在一起,从而产生如下结果

    portfolio_cost  portfolio_value portfolio_return    holding_period  closedate   stock
11/7/2013   72.37   74.59   0.03067569  5   11/14/2013  AAPL
11/19/2013  36.21   37.58   0.037834852 7   11/29/2013  MSFT
12/12/2013  36.68   36.9    0.005997819 9   12/26/2013  MSFT
12/18/2013  77.78   80.51   0.035099    3   12/23/2013  AAPL
1/3/2014    76.4    79.23   0.03704188  5   1/10/2014   AAPL
3/14/2014   37.44   39.27   0.048878205 2   3/18/2014   MSFT
4/4/2014    75.55   77.42   0.02475182  1   4/7/2014    AAPL
4/10/2014   39.08   40.58   0.038382805 11  4/28/2014   MSFT
5/2/2014    39.41   40.42   0.025628013 7   5/13/2014   MSFT
5/9/2014    83.65   86.37   0.03251644  6   5/19/2014   AAPL
6/20/2014   90.91   92.93   0.02221978  6   6/30/2014   AAPL
    portfolio_cost  portfolio_value portfolio_return    holding_period  closedate   stock
11/7/2013   72.37+36.21 74.59+37.58 VALUE   5   11/14/2013  AAPL-MSFT
如果有两个共同的日期,我希望它这样做

    portfolio_cost  portfolio_value portfolio_return    holding_period  closedate   stock
11/7/2013   72.37   74.59   0.03067569  5   11/14/2013  AAPL
11/19/2013  36.21   37.58   0.037834852 7   11/29/2013  MSFT
12/12/2013  36.68   36.9    0.005997819 9   12/26/2013  MSFT
12/18/2013  77.78   80.51   0.035099    3   12/23/2013  AAPL
1/3/2014    76.4    79.23   0.03704188  5   1/10/2014   AAPL
3/14/2014   37.44   39.27   0.048878205 2   3/18/2014   MSFT
4/4/2014    75.55   77.42   0.02475182  1   4/7/2014    AAPL
4/10/2014   39.08   40.58   0.038382805 11  4/28/2014   MSFT
5/2/2014    39.41   40.42   0.025628013 7   5/13/2014   MSFT
5/9/2014    83.65   86.37   0.03251644  6   5/19/2014   AAPL
6/20/2014   90.91   92.93   0.02221978  6   6/30/2014   AAPL
    portfolio_cost  portfolio_value portfolio_return    holding_period  closedate   stock
11/7/2013   72.37+36.21 74.59+37.58 VALUE   5   11/14/2013  AAPL-MSFT

这是一个data.table解决方案。我将这些数据帧称为
df1
df2
。我将第一个df2条目的日期更改为与df1中的第一个条目相同,否则没有通用日期。要考虑关闭日期不同的情况,结果将粘贴每个由
分隔的关闭日期

library(data.table)
df1$Date <- rownames(df1)
df2$Date <- rownames(df2)
newdf <- rbind(df1,df2)
DT <- data.table(newdf)
DT[,list("portfolio_cost"=sum(portfolio_cost), "portfolio_value"=sum(portfolio_return), "holding_period"=sum(holding_period), "closedate"=paste(closedate,collapse=","), "stock"=paste(stock,collapse="-")),by=Date]
库(data.table)

df1$Date请输出您的原始数据帧,以便更易于使用。我想是有人为我做的。非常感谢你!新加入stackexchange成为会员!我想知道结果是什么?它是数据帧吗?由于某些原因,我无法像通常操作数据帧那样操作结果对象。我正在尝试将行名更改回日期,并删除日期列(只是个人偏好)。再次感谢你!这很有帮助,因为这是一个data.table,您可以使用
data.frame(DT)
更改回data.frame。此外,您如何按日期对整个表进行排序?