2013-10-15 46 views
4

我是R新手,所以這個問題對你們許多人來說可能很簡單。我有1000列和1000行,數據幀有點像跟隨計算數據幀中每2列的比率

id S1 S2 S3 S4 S5 S6 
A1 2 7 9 56 34 23 
A2 3 5 11 4 8 56 
A3 8 22 32 45 67 76 
A4 4 21 23 1 34 43 
A5 6 12 5 19 36 46 
A6 45 89 76 87 75 78 
A7 45 71 56 65 34 87 
A8 26 76 67 87 65 65 

我想獲得列1/2,列3/4的比例,...列999/1000,然後放入矩陣中。我嘗試使用「for」來完成它,但從未成功。任何人都可以幫助我呢?謝謝。

+2

你可以分享你試着用你的'爲'循環? – A5C1D2H2I1M1N2O1R2T1

+0

對不起,數據框如下所示: –

+0

您可能想要考慮如果列數奇數,會發生什麼情況。 –

回答

8

無需使用for,使用seq爲在分子和分母

> num <- seq(2,ncol(df),2) # index for numerator 
> dem <- seq(3,ncol(df),2) # index for denominator 
> df[, num]/df[, dem] 
     S1   S3  S5 
1 0.2857143 0.1607143 1.4782609 
2 0.6000000 2.7500000 0.1428571 
3 0.3636364 0.7111111 0.8815789 
4 0.1904762 23.0000000 0.7906977 
5 0.5000000 0.2631579 0.7826087 
6 0.5056180 0.8735632 0.9615385 
7 0.6338028 0.8615385 0.3908046 
8 0.3421053 0.7701149 1.0000000 

選擇列所有一次性創建索引:df[,seq(2,ncol(df),2)]/df[, seq(3,ncol(df),2)]

+1

好方法。 +1 – A5C1D2H2I1M1N2O1R2T1

+0

+1我看到我基本上做了和你一樣的事情。但是,你不想讓'dem'從'1'開始? –

+1

不,因爲'df'的第一列不是數字,它是一個因子變量,這就是爲什麼我排除col1的原因。 –