我有以下数据:
library(tidyverse)
df <- tribble(~SwapID, ~SwapLegID, ~LegPayerID, ~ CurrencyID, ~NotionalAmount,
'AB-D-0001', 1, 'AB', 'CAD', 250000000,
'AB-D-0001', 2, 'BMO', 'CAD', 250000000,
'AB-D-0002', 1, 'AB', 'CAD', 250000000,
'AB-D-0002', 2, 'RBC', 'CAD', 250000000,
'AB-D-0004', 1, 'AB', 'CAD', 250000000,
'AB-D-0004', 2, 'TD', 'USD', 250000000,
'AB-D-0005', 1, 'BMO', 'USD', 416666668,
'AB-D-0005', 2, 'AB', 'CAD', 548750002)
我需要找到一种方法,分别对“ SwapID”和“ SwapLegID”分别分配“ NotionalAmount”。
因此,对于“ SwapID” AB-D-0005,我想将548750002除以416666668,得到1.317,并为此数据元素分配一个新列。
FXrateSwap<-SwapLegs%>%
arrange(SwapID,SwapLegID)%>%
select(SwapID,SwapLegID,LegPayerID,CurrencyID,NotionalAmount)
答案 0 :(得分:1)
尽管您应该考虑上述问题,但从技术上讲,这是我认为您想要的。
want = FXrateSwap %>%
group_by(SwapID) %>%
summarize(ratio_want = sum(NotionalAmount[SwapLegID==1])/sum(NotionalAmount)
答案 1 :(得分:0)
尝试一下
library(tidyverse)
df %>%
group_by(SwapID) %>%
mutate(ratio = NotionalAmount[SwapLegID == 2]/NotionalAmount[SwapLegID == 1])