R-来自多个数据帧的求和
我试图看看R中是否有任何可用的函数/包可以以更简单的方式完成下面的工作。请耐心听我描述这个问题 我有一份交易清单,其中我将交易价值加总,即融资日期和CCY本地的总交易金额,如下所示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
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")