2017-01-23 15 views
0

以下の入力がありますが、2つの列を減算したいのですが、最も高い値から常に最小値を減算したいと考えています。 私は結果として負の値を必要としないため、最初の列(PaternalOrgin)と2番目の列(MaternalOrigin)の他の時間に最大値があることがあります。Rフレーム内の小さな列から大きな列を減算するR

入力:

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

とdput出力がこれです:

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") 

このように、私の予想出力は次のようになります。

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

、誰かが私に助言することができますしてください?おかげさまで

答えて

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

関連する問題