我已经为一个只有三列的数据框做了这个。我想用“c”变量划分所有变量。
> d <- data.frame(rep(2,7),rep(4,7),rep(8,7))
> colnames(d) <- c("a","b","c")
> #Creating the new variables
> d$c1 <- d$a/d$b
> d$c2 <- d$a/d$c
> d
a b c c1 c2
1 2 4 8 0.5 0.25
2 2 4 8 0.5 0.25
3 2 4 8 0.5 0.25
4 2 4 8 0.5 0.25
5 2 4 8 0.5 0.25
6 2 4 8 0.5 0.25
7 2 4 8 0.5 0.25
但是,如果该数据框有超过100列,如何设置循环或使用apply系列创建新变量呢?
答案 0 :(得分:2)
我认为你不需要*apply
或循环。尝试:
cbind(d, d[, 1] / d[, -1])
但您需要将列名设置为所需的列名。
d <- setNames(data.frame(rep(2,7),rep(4,7),rep(8,7)), letters[1:3])
cbind(d, d[, 1] / d[, -1])
# a b c b c
#1 2 4 8 0.5 0.25
#2 2 4 8 0.5 0.25
#3 2 4 8 0.5 0.25
#4 2 4 8 0.5 0.25
#5 2 4 8 0.5 0.25
#6 2 4 8 0.5 0.25
#7 2 4 8 0.5 0.25