2013-10-23 3 views
1

3 열의 데이터 프레임이 있습니다.
더 큰 값을 가진 2 개의 열을 합계로 합병하고자합니다.
병합이 불가능할 때마다 함수가 오류를 throw해야합니다. (예 : 작은 값 0.3,0.3,0.4에 넥타이있을 때) : 당신의 도움이값에 따라 열을 병합

을 사전에

|X|  |Y| 
0.8  0.2 #(x=0.5 + 0.3) 
0.9  0.1 #(x=0.7 + 0.2) 
0.8  0.2 #(x=0.4 + 0.4) 

감사

|A|  |B|  |C| 
0.5  0.3  0.2 
0.1  0.7  0.2 
0.4  0.4  0.2 

결과 데이터 프레임

업데이트 :경우 누군가에 10 같은 문제를 가지고, 내가 사용 :

apply(dt, 1, function(x) which(x==min(x))) 

데이터 프레임이 같은 최소값이

답변

3
dt$something <- dt$A + dt$B + dt$C - pmin(dt$A,dt$B,dt$C) 

귀하의 추가 조건이보다 쉽게되어 있는지 찾아 손잡이는 data.table

dt <- data.table(dt) 
dt[,something := A + B + C - pmin(A,B,C) ] 
dt[A==B | B ==C | C==A,something := NA] 
1

아마도 th 당신을 시작하게 할 것입니다 :

t(apply(mydf, 1, function(x) {a <- sort(x); c(sum(a[2:3]), a[1])})) 
#  [,1] [,2] 
# [1,] 0.8 0.2 
# [2,] 0.9 0.1 
# [3,] 0.8 0.2 

다른 조건을 추가해야합니다.

관련 문제