2013-04-05 5 views
-1

R에 데이터 프레임 (150000 개의 obs, 15 개의 변수)이 있고 하나의 변수 값의 부분 집합을 수정해야합니다 (단순히 상수를 곱하여) 다른 것의 가치에 기초하여. 이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?R에있는 다른 열의 값을 기준으로 데이터 프레임 열 값 곱하기

그래도 일하는 것이 적용하지만 함수 (분명히 함수에서 증식 할 수 없음) 및 규정 작성하는 방법을 잘 모르겠어요 :

df$RESULT <- df[apply(df$RESULT, 1, function(x * 18.01420678) where(SITE==1)), ] 
+2

안녕하세요하실 수 있습니다! [** 훌륭한 재현 가능한 예제를 만드는 방법 **] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible- 예를 들어) 우리가 당신을 도울 수 있습니다. 고맙습니다. – Arun

+0

입력으로 4-5 행, 2-3 열을 가진 장난감 예를 생각해 내십시오. 또한 기대되는 결과를 언급하십시오. – Nishanth

답변

2

는이 의미를?

dat  <- data.frame(x=1:10,y=sample(20,10)) 
constant <- 100 
dat$y <- ifelse(dat$x > dat$y, dat$y*constant, dat$y) 
+0

완벽. 나는 그 해결책에 대해 과도하게 생각하고 있었다. 고맙습니다. – user1357079

2

당신의 용량을 사용할 수 있습니다 "["서브 세트 만이 할당 양쪽의 부분 집합을 정의하는 논리적 표현을 사용할 필요가 부분 집합의 "수정"에 대한 작업을 수행합니다. 이후 수정을 필요로하는 값으로 만 작업하게되므로 더 이상 조건부 기능을 사용하지 마십시오. 조작이 경우

df[ df$SITE==1, "RESULT" ] <- df[ df$SITE==1, "RESULT"] * 18.01420678 

이 경우 많은 (수백만)에서 수행 또는 시뮬레이션을 반복적으로 수행하는이 방법은 훨씬 더 빨리 그 ifelse 접근

관련 문제