r - 循环计算权重并创建新变量

标签 r loops dplyr iteration

如果我从以下数据集开始并调用df:

   A    B
  0.8   0.9
  0.99  0.88
  0.7   0.9658
  0.65  0.6684

我的目标是实现下面的数据集,其中包含一组使用与初始集不同的权重的新变量:

    A        B      A_10    A_20    A_30    A_40    A_50
    0.8     0.9     0.89    0.88    0.87    0.86    0.85
    0.99    0.88    0.891   0.902   0.913   0.924   0.935
    0.7     0.9658  0.93922 0.91264 0.88606 0.85948 0.8329
    0.65    0.6684  0.66656 0.66472 0.66288 0.66104 0.6592

我使用的代码是:

   for (i in 10:90) {
        df <- df %>% mutate(A_[i] =(A*[i]/100)+(B*((1-[i])/100))) }

我收到以下错误:

Error: unexpected '=' in:" df <- df %>% mutate(A_[i] ="*

最佳答案

最主要的是,要给 dplyr 进行动态命名,您应该使用语法 %>% mutate(!!paste0("BG_", i) := A + B) .

for (i in seq(10, 90, 10)) {

  df <- df %>% 
    mutate(!!paste0("BG_", i) := (A*i/100)+(B*((1-i)/100))) 
}

df
#    A      B     BG_10     BG_20     BG_30     BG_40     BG_50     BG_60
# 1 0.80 0.9000 -0.001000 -0.011000 -0.021000 -0.031000 -0.041000 -0.051000
# 2 0.99 0.8800  0.019800  0.030800  0.041800  0.052800  0.063800  0.074800
# 3 0.70 0.9658 -0.016922 -0.043502 -0.070082 -0.096662 -0.123242 -0.149822
# 4 0.65 0.6684  0.004844  0.003004  0.001164 -0.000676 -0.002516 -0.004356
#     BG_70     BG_80     BG_90
# 1 -0.061000 -0.071000 -0.081000
# 2  0.085800  0.096800  0.107800
# 3 -0.176402 -0.202982 -0.229562
# 4 -0.006196 -0.008036 -0.009876

使用的数据:

df <- read.table(text = "A    B
0.8   0.9
0.99  0.88
0.7   0.9658
0.65  0.6684", head=T)

关于r - 循环计算权重并创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50403796/

相关文章:

R - 从一系列日期自动填充数据框中的列

r - 在R中为H2O模型打印 “pretty”表

javascript - JQuery/Javascript - 解决多个 promise

C程序求一个区间内不断增长的数字

r - 将一列变量和一列值分成 r 中的各个组成部分

r - 如何诱导 [r] 中两个逆累积概率分布之间的相关性?

r - 具有 2 列同名的 data.frame : how to select the second one?

java - 如何将 "case"放入循环中

r - inner_join() 其中一个键的值范围(年份)

r - dplyr,R : Counting a specific value in multiple columns at once