如何获取数据行并创建新的数据列

时间:2019-06-25 20:11:26

标签: r

我有以下数据:

dataset

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)

2 个答案:

答案 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])