R: Заполнить столбец DataFrame, используя саму запаздывающие данные - PullRequest
0 голосов
/ 15 октября 2019

очень жаль беспокоить вас, ребята.

У меня есть фрейм данных A

  Date       Currency Exchange TransactionNo AccountNo TransactionType Amount
  <date>     <chr>       <dbl>         <int>     <dbl> <fct>            <dbl>
1 2019-07-01 CNY         0.198       1000001     10001 Spend           -12.0 
2 2019-07-01 USD         1.35        1000002     10001 Spend            -5.31
3 2019-07-01 SGD         1           1000003     10001 Spend           -18.5 
4 2019-07-01 SGD         1           1000004     10001 Withdraw         -5.16
5 2019-07-01 SGD         1           1000005     10001 Withdraw         -5.95
6 2019-07-02 USD         1.36        1000051     10001 Spend            -8.68

Я хотел бы создать новый столбец с именем Balance.

Первые данныебаланса будет случайным числом от 1000 до 2000 плюс первые данные в сумме. Если предположить, что случайное число равно 1000, то первые данные в балансе будут 988,00 (результат 1000 минус 12,0). Вторые данные баланса должны быть 988,00 + вторые данные в сумме (-5,31), что составляет 982,69. Третьи данные баланса должны быть 982,69 + третьи данные в сумме (-18,5), что составляет 964,19. И так далее.

Я пытаюсь использовать библиотеку (data.table), а затем код

Balance := Amount + shift(Balance, 1L, type="lag")

Конечно, мой код не может отразить тот факт, что мойпервая запись должна быть случайным числом от 1000 до 2000 плюс данные первой строки в сумме.

Я понимаю, что у каждого есть свои обязанности в жизни. Я никогда не забывал ценить каждого человека, который потратил свое время и усилия на помощь другим новым программистам, таким как я. Искренне благодарю вас от всего сердца.

1 Ответ

0 голосов
/ 15 октября 2019

Вам не нужно shift, просто накопленная сумма (cumsum) столбца Amount.

A[, Balance := runif(n = 1, min = 1000, max = 2000) + cumsum(Amount)]

Возможно с аргументом by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...