Как взять строки данных и создать новый столбец данных - PullRequest
1 голос
/ 25 июня 2019

У меня есть следующие данные:

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)

Мне нужно найти способ разделить «NotionalAmount» друг с другом для каждого соответствующего «SwapID» и «SwapLegID».

Поэтому для "SwapID" AB-D-0005 я хочу разделить 548750002 на 416666668, чтобы получить 1,317 и назначить этому элементу данных новый столбец.

FXrateSwap<-SwapLegs%>%

arrange(SwapID,SwapLegID)%>%

select(SwapID,SwapLegID,LegPayerID,CurrencyID,NotionalAmount)

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Хотя вы должны учитывать вышеуказанные проблемы, технически это то, что я думаю, вы бы хотели.

want = FXrateSwap %>% 
   group_by(SwapID) %>% 
   summarize(ratio_want = sum(NotionalAmount[SwapLegID==1])/sum(NotionalAmount)
0 голосов
/ 26 июня 2019

Попробуйте это

library(tidyverse)

df %>% 
  group_by(SwapID) %>% 
  mutate(ratio = NotionalAmount[SwapLegID == 2]/NotionalAmount[SwapLegID == 1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...