2017-01-23 9 views
0

아래에 입력했습니다. 두 열을 뺍니다. 그러나 가장 높은 값에서 항상 최저 값을 뺍니다. 결과로 음수 값을 원하지 않기 때문에 가장 높은 값이 첫 번째 열 (PaternalOrgin)에 있고 다른 시간이 두 번째 열 (MaternalOrigin)에있는 경우가 있습니다.데이터 프레임의 더 작은 열에서 큰 열을 뺀 값을 R

입력 :

df2 <- PaternalOrigin MaternalOrigin Results 
16    20  4 
3    6  3 
11    0  11 
1    3  2 
1    4  3 
3    11  8 

가, 누군가가 나에게 조언 해 줄 수 있습니다하십시오

따라서
df <- structure(list(PaternalOrigin = c(16, 3, 11, 1, 1, 3), MaternalOrigin = c(20, 6, 0, 3, 4, 11)), colnames = c("PaternalOrigin", "MaternalOrigin"), row.names= c(NA, -6L), class="data.frame") 

, 내 예상 출력과 같습니다

df <- PaternalOrigin MaternalOrigin 
16    20 
3    6 
11    0 
1    3 
1    4 
3    11 

과 dput 출력은 무엇입니까? 감사합니다. .

답변

0

우리는 abs

transform(df, Results = abs(PaternalOrigin - MaternalOrigin)) 
#  PaternalOrigin MaternalOrigin Results 
#1    16    20  4 
#2    3    6  3 
#3    11    0  11 
#4    1    3  2 
#5    1    4  3 
#6    3    11  8 

으로 포장 할 수 있습니다 또는 우리에 할당 할 수 있습니다 '결과'

df$Results <- with(df, abs(PaternalOrigin - MaternalOrigin)) 

또는 사용 data.table

library(data.table) 
setDT(df)[, Results := abs(PaternalOrigin - MaternalOrigin)] 

또는 dplyr

library(dplyr) 
df %>% 
    mutate(Results = abs(PaternalOrigin - MaternalOrigin)) 
+1

와 함께 당신을 감사합니다! 정말 도움이되었습니다! – Tfg1005