R-来自多个数据帧的求和

R-来自多个数据帧的求和,r,dplyr,aggregate,R,Dplyr,Aggregate,我试图看看R中是否有任何可用的函数/包可以以更简单的方式完成下面的工作。请耐心听我描述这个问题 我有一份交易清单,其中我将交易价值加总,即融资日期和CCY本地的总交易金额,如下所示 library(dplyr) > Sum_Trade_Amt_by_Funding_Date_Ccy <- combined_list %>% select(Funding_date, CCY_local, Trade_value_local) %>% + group_b

我试图看看R中是否有任何可用的函数/包可以以更简单的方式完成下面的工作。请耐心听我描述这个问题

我有一份交易清单,其中我将交易价值加总,即融资日期和CCY本地的总交易金额,如下所示

library(dplyr)
    > Sum_Trade_Amt_by_Funding_Date_Ccy <- combined_list  %>% select(Funding_date, CCY_local, Trade_value_local) %>%
    +   group_by(Funding_date, CCY_local) %>%
    +   summarise(Total = sum(Trade_value_local))
    > 
    > Sum_Trade_Amt_by_Funding_Date_Ccy
    # A tibble: 9 x 3
    # Groups: Funding_date [?]
      Funding_date CCY_local    Total
      <date>       <chr>        <dbl>
    1 2018-01-15   HKD         767200
    2 2018-01-15   KRW       - 115870
    3 2018-01-15   TWD         923639
    4 2018-01-16   HKD       - 113985
    5 2018-01-17   INR        2307592
    6 2018-01-17   MYR        3089969

I have a cash forecast of balances by local currencies and dates:

> cash_forecast_long = read.csv("cash_forecast_long.csv", header=TRUE, stringsAsFactors=FALSE)
> cash_forecast_long
   CCY_local       Day    Balance
1        AUD 1/10/2018   42984.41
2        HKD 1/10/2018  214412.85
3        INR 1/10/2018 1862292.95
4        KRW 1/10/2018      86.00
5        TWD 1/10/2018 2169925.00
6        USD 1/10/2018  873297.93
7        AUD 1/11/2018   32984.41
8        HKD 1/11/2018  214412.85
9        INR 1/11/2018 1862292.95
10       KRW 1/11/2018   20086.00
11       TWD 1/11/2018 5169925.00
12       USD 1/11/2018  573297.93
对于现有的R功能/包,是否有任何优雅/更简洁的方法来扩展显示这些额外日期现金余额的现金预测表

举例说明: 对于存在交易的货币和日期,例如。 数据框,现金预测显示2018年11月1日至2018年1月11日的214412.85港元余额。数据框,按融资日期计算的交易总额显示2018年1月15日港币的交易总额为767200。2018年1月15日的港元余额为2018年1月11日的余额与2018年1月15日的总额之和,该行条目将添加到现金预测中

对于没有交易的货币和日期,例如。 2018年1月15日,在没有澳元交易的情况下,2018年1月15日的现汇预测澳元将仅显示32984.41,这与2018年1月11日的余额相同,该行条目添加到现汇预测中

示例输出:


我不清楚您在这里真正需要什么,因为您可以直接从您的现金预测表中得出每天的交易,而无需参考任何其他表,据我所知,这意味着您根本不需要按资金日期计算的交易金额总和表。由于每天结束时每种货币的余额仅为期初余额加上任何交易金额,因此操纵现金预测表的余额以得出交易是一项简单的任务,只要余额总是随着交易的进行而变化

使用下面代码中缩写为cf的现金预测表名称的示例输出版本,可以将交易导出为派生表cf1,如下所示,按货币类型和日期排序,以显示从余额导出交易的方式:

cf = arrange(cf, CCY_local, Day)
library(dplyr)    
cf1 = group_by(cf, CCY_local) %>%
  mutate(trade = Balance - lag(Balance)) %>%
  mutate(trade = ifelse(is.na(trade), 0, trade)) %>%
  select(CCY_local, Day, trade, Balance)

 > cf1
# A tibble: 18 x 4
# Groups:   CCY_local [6]
   CCY_local        Day    trade    Balance
       <chr>     <date>    <dbl>      <dbl>
 1       AUD 2018-01-10        0   42984.41
 2       AUD 2018-01-11   -10000   32984.41
 3       AUD 2018-01-15        0   32984.41
 4       HKD 2018-01-10        0  214412.85
 5       HKD 2018-01-11        0  214412.85
 6       HKD 2018-01-15   767200  981612.85
 7       INR 2018-01-10        0 1862292.95
 8       INR 2018-01-11        0 1862292.95
 9       INR 2018-01-15        0 1862292.95
10       KRW 2018-01-10        0      86.00
11       KRW 2018-01-11    20000   20086.00
12       KRW 2018-01-15  -115870  -95784.00
13       TWD 2018-01-10        0 2169925.00
14       TWD 2018-01-11  3000000 5169925.00
15       TWD 2018-01-15 -2076361 3093564.00
16       USD 2018-01-10        0  873297.93
17       USD 2018-01-11  -300000  573297.93
18       USD 2018-01-15        0  573297.93

我很难理解你想要什么。我认为如果你的样本数据更短一些,那么现金流预测是否有意义呢?似乎只有现金预测才是相关的,而且请以您想要的格式显示样本输入的完整样本输出。你好,Gregor,我删除了现金预测,缩短了样本数据,并显示了样本输出数据。请让我知道这是否有帮助。如果没有,我会再试一次。再次感谢您的回复。在您的问题中,最好将所需的R输出创建为格式化文本,而不是Excel屏幕截图,因为R控制台输出是文本。
cf2 = filter(cf1, trade != 0) %>%
  select(Day, CCY_local, trade) %>%
  arrange(Day, CCY_local)

> cf2
# A tibble: 7 x 3
# Groups:   CCY_local [5]
         Day CCY_local    trade
      <date>     <chr>    <dbl>
1 2018-01-11       AUD   -10000
2 2018-01-11       KRW    20000
3 2018-01-11       TWD  3000000
4 2018-01-11       USD  -300000
5 2018-01-15       HKD   767200
6 2018-01-15       KRW  -115870
7 2018-01-15       TWD -2076361
cf = read.table(text = "CCY_local Day Balance
AUD 1/10/2018 42984.41
HKD 1/10/2018 214412.85
INR 1/10/2018 1862292.95
KRW 1/10/2018 86.00
TWD 1/10/2018 2169925.00
USD 1/10/2018 873297.93
AUD 1/11/2018 32984.41
HKD 1/11/2018 214412.85
INR 1/11/2018 1862292.95
KRW 1/11/2018 20086.00
TWD 1/11/2018 5169925.00
USD 1/11/2018 573297.93
AUD 1/15/2018 32984.41
HKD 1/15/2018 981612.85
INR 1/15/2018 1862292.95
KRW 1/15/2018 -95784.00
TWD 1/15/2018 3093564.00
USD 1/15/2018 573297.93", header = TRUE, stringsAsFactors = FALSE)

cf$Day = as.Date(cf$Day, "%m/%d/%Y")