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。此外,您如何按日期对整个表进行排序?