如果我从以下数据集开始并调用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/