2016-08-03 12 views
0

3つの列だけのデータフレームに対してこれを実行しました。私はすべての変数を "c"変数で除算したい。 新しい変数を作成して、データフレームのすべての変数を各行の同じ変数で分割します。 - R

> 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 

しかし

、そのデータフレームはもっとそして百の列を持っているものならば、どのように私は新しい変数を作成するために適用する家族とのループか何かを設定することができますか?

答えて

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 
+0

ありがとう、私はちょうどそれを試みた、それは私が思ったよりはるかに簡単だった。 – CreamStat

関連する問題