每组R的累积值

qmelpv7a  于 2022-12-25  发布在  其他
关注(0)|答案(2)|浏览(114)

所以,我有一个头痛找到一种方法来编程,因为它是非常容易的Excel,我希望这只是我的n 00 b缺乏知识.检查示例表我提出:我的目标是创建最后一列(余额)。
每个TRA(101和102)具有多个IDA(该TRA中所有条目的顺序,从1到最后)。
第一个IDA中的余额是本金的总和。对于每个下一个IDA,余额值减去其本金的总额,直到最后一个余额简单地等于最后一个TDA。
换句话说,一行的余额值是同一行中的本金值加上下一IBA行的余额值之和,直到每个TRA的最后一个为止。
例如:对于TRA 101,我们有四行(IDA从1到4)。第一行的余额值为(-4.799.471 + -14.398.412 = -19.197.882),即第一行的本金加上第二行的余额。对于每个TRA的最后一个IDA(101中的4,102中的9),我只需要本金的值。
我们尝试了这个选项,但是当我们通过TRA具有不同的本金值时,它不起作用。

df %<>%
  group_by(TRA)%>%
  arrange(desc(IDA))%>%
  mutate(saldo = cumsum(Principal))%>%
  ungroup()%>%
  arrange(TRA)

谁能给我指一条最好的路?

ROW TRA IDA IDB     Principal   Balance
1   101 1   1011    -4,799,471  -19,197,882
2   101 2   1012    -4,799,471  -14,398,412
3   101 3   1013    -4,799,471  -9,598,941
4   101 4   1014    -4,799,471  -4,799,471
5   102 1   1021    -5,248,583  -47,237,250
6   102 2   1022    -5,248,583  -41,988,667
7   102 3   1023    -5,248,583  -36,740,084
8   102 4   1024    -5,248,583  -31,491,500
9   102 5   1025    -5,248,583  -26,242,917
10  102 6   1026    -5,248,583  -20,994,334
11  102 7   1027    -5,248,583  -15,745,750
12  102 8   1028    -5,248,583  -10,497,167
13  102 9   1029    -5,248,584  -5,248,584
7vux5j2d

7vux5j2d1#

如果您发布的数据是您正在使用的数据框,则需要将 Principal 列转换为数值,例如

df %>% 
  group_by(TRA) %>% 
  arrange(desc(IDA)) %>% 
  mutate(saldo = cumsum(gsub(",", "", Principal))) %>% 
  ungroup() %>% 
  arrange(TRA)
# A tibble: 13 × 7
     ROW   TRA   IDA   IDB Principal  Balance         saldo
   <int> <int> <int> <int> <chr>      <chr>           <dbl>
 1     4   101     4  1014 -4,799,471 -4,799,471   -4799471
 2     3   101     3  1013 -4,799,471 -9,598,941   -9598942
 3     2   101     2  1012 -4,799,471 -14,398,412 -14398413
 4     1   101     1  1011 -4,799,471 -19,197,882 -19197884
 5    13   102     9  1029 -5,248,584 -5,248,584   -5248584
 6    12   102     8  1028 -5,248,583 -10,497,167 -10497167
 7    11   102     7  1027 -5,248,583 -15,745,750 -15745750
 8    10   102     6  1026 -5,248,583 -20,994,334 -20994333
 9     9   102     5  1025 -5,248,583 -26,242,917 -26242916
10     8   102     4  1024 -5,248,583 -31,491,500 -31491499
11     7   102     3  1023 -5,248,583 -36,740,084 -36740082
12     6   102     2  1022 -5,248,583 -41,988,667 -41988665
13     5   102     1  1021 -5,248,583 -47,237,250 -47237248
mec1mxoz

mec1mxoz2#

它很好用,不是吗?

df <- read_table(
  "ROW TRA IDA IDB     Principal   Balance
1   101 1   1011    -4,799,471  -19,197,882
2   101 2   1012    -4,799,471  -14,398,412
3   101 3   1013    -4,799,471  -9,598,941
4   101 4   1014    -4,799,471  -4,799,471
5   102 1   1021    -5,248,583  -47,237,250
6   102 2   1022    -5,248,583  -41,988,667
7   102 3   1023    -5,248,583  -36,740,084
8   102 4   1024    -5,248,583  -31,491,500
9   102 5   1025    -5,248,583  -26,242,917
10  102 6   1026    -5,248,583  -20,994,334
11  102 7   1027    -5,248,583  -15,745,750
12  102 8   1028    -5,248,583  -10,497,167
13  102 9   1029    -5,248,584  -5,248,584"
)

df %>%
  group_by(TRA) %>%
  arrange(TRA, desc(IDA)) %>%
  mutate(saldo = cumsum(Principal)) %>% 
  ungroup()

# A tibble: 13 × 7
     ROW   TRA   IDA   IDB Principal   Balance     saldo
   <dbl> <dbl> <dbl> <dbl>     <dbl>     <dbl>     <dbl>
 1     4   101     4  1014  -4799471  -4799471  -4799471
 2     3   101     3  1013  -4799471  -9598941  -9598942
 3     2   101     2  1012  -4799471 -14398412 -14398413
 4     1   101     1  1011  -4799471 -19197882 -19197884
 5    13   102     9  1029  -5248584  -5248584  -5248584
 6    12   102     8  1028  -5248583 -10497167 -10497167
 7    11   102     7  1027  -5248583 -15745750 -15745750
 8    10   102     6  1026  -5248583 -20994334 -20994333
 9     9   102     5  1025  -5248583 -26242917 -26242916
10     8   102     4  1024  -5248583 -31491500 -31491499
11     7   102     3  1023  -5248583 -36740084 -36740082
12     6   102     2  1022  -5248583 -41988667 -41988665
13     5   102     1  1021  -5248583 -47237250 -47237248

相关问题