2013-10-15 1 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 
내가 열 2 열 3/4의 비율을 좀하고 싶습니다

, ... 열 999/1000, 그리고 매트릭스에 넣어. 나는 그것을 위해 "for"를 사용하려했지만 결코 성공하지 못했습니다. 누구든지이 일에 나를 도울 수 있습니까? 고맙습니다.

+2

당신이 공유 할 수 있습니다' for 루프? – A5C1D2H2I1M1N2O1R2T1

+0

죄송합니다. 데이터 프레임은 다음과 같습니다. –

+0

기수가 홀수 인 경우 어떻게 될지 생각해보십시오. –

답변

8

한 번에 모든 분자와 분모

> 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 

의 열을 선택하는 인덱스를 만들 수 seq를 사용 for를 사용할 필요가 없습니다 : 당신이 뭘하려 df[,seq(2,ncol(df),2)]/df[, seq(3,ncol(df),2)]

+1

좋은 접근 방법. +1 – A5C1D2H2I1M1N2O1R2T1

+0

+1 나는 기본적으로 너와 똑같은 것을 보았다. 하지만'dem'가'1'에서 시작되기를 원하지 않습니까? –

+1

아니요. 왜냐하면'df'의 첫 번째 열은 숫자가 아니기 때문에 factor 변수입니다. 그래서 col1을 배제한 것입니다. –

관련 문제