R 如何分解数据帧并将列值减少一定百分比

R 如何分解数据帧并将列值减少一定百分比,r,R,我正在学习R,我正在寻找一些关于如何解决这个问题的帮助。我希望生成一个数据帧,将列值减少一定的百分比 例如: 以数据帧为例: id 500 396 450 我想操纵这个数据帧来产生以下输出——将每个值减少1.2%四倍 预期结果: id count 500 1 494 2 488.072 3 482.215136 4 476.428554368 5 396 1 391.248 2 386.553024 3 381.914387712 4 377.33

我正在学习R,我正在寻找一些关于如何解决这个问题的帮助。我希望生成一个数据帧,将列值减少一定的百分比

例如:

以数据帧为例:

    id
    500
    396
    450
我想操纵这个数据帧来产生以下输出——将每个值减少1.2%四倍

预期结果:

id  count
500 1
494 2
488.072 3
482.215136  4
476.428554368   5
396 1
391.248 2
386.553024  3
381.914387712   4
377.331415059456    5
450 1
444.6   2
451 3
445.588 4
452 5

我们可以使用
累计
创建值向量,该向量在每次迭代时重置,以将新值减少前一个值的1.2%

library(dplyr)
library(purrr)
library(tibble)
map_dfr(df1$id, ~  
   tibble(id = accumulate(rep(.x, 5),  ~ .x - .y * 0.012 )) %>% 
           mutate(count = row_number()) )
-输出

# A tibble: 15 x 2
#      id count
#   <dbl> <int>
# 1  500      1
# 2  494      2
# 3  488      3
# 4  482      4
# 5  476      5
# 6  396      1
# 7  391.     2
# 8  386.     3
# 9  382.     4
#10  377.     5
#11  450      1
#12  445.     2
#13  439.     3
#14  434.     4
#15  428.     5
数据
df1我认为
452
的最后一个值与预期中的445相比没有减少
out <- data.frame(id = numeric(0), count = integer(0))
for(i in seq_along(df1$id)) {
      tmpid <- df1$id[i]
      for(j in 2:5) {
         tmpid[j] <- tmpid[j-1] - tmpid[j-1] * 0.012
      }
   out <- rbind(out, data.frame(id = tmpid, count = 1:5))
 }

out
df1 <- structure(list(id = c(500L, 396L, 450L)), class = "data.frame", 
   row.names = c(NA, 
-3L))