我的数据框称为Subs。
我的变量是REV_4
,REV_5
,REV_6
等
我想创建新的变量来计算收入的百分比变化。
例如:d.rev.5 <- Subs$REV_5/Subs/$REV_4 -1
我想使用循环来创建这些新变量。我已经试过了:
for(i in 5:10){
Subs$d.data.[i] <- Subs$REV_[i]/Subs$REV_[i-1] - 1 }
但这没用。我怀疑它不能识别i
变量名的一部分。
有什么办法可以解决这个问题?太感谢了。
您不能像尝试(Subs$REV_[i]
)那样引用列,需要创建一个字符串来表示该列。
我认为您要尝试做的是(由于缺少您自己创建的数据)
set.seed(123)
Subs <- data.frame(rev_1 = rnorm(10, 0, 1),
rev_2 = rnorm(10, 0, 1),
rev_3 = rnorm(10, 0, 1),
rev_4 = rnorm(10, 0, 1))
for(i in 2:4){
## looping over columns 2-4
col1 <- paste0("rev_", i)
col2 <- paste0("rev_", i - 1)
col_new <- paste0("d.rev.", i)
Subs[, col_new] <- Subs[, col1] / Subs[, col2]
}
## A note on subsetting a data.frame
Subs$rev_1 ## works
i <- 1
Subs$rev_[i] ## doesn't work
Subs[, rev_[i]] ## doesn't work
Subs[, "rev_1"] ## works
Subs[, paste0("rev_", i)] ## works
## because
paste0("rev_", i) ## creates the string:
[1] "rev_1"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句