从R中数据框中的较小列中减去较大的列

subtracting the greater column from smaller columns in a dataframe in R

我有下面的输入,我想减去两列,但我想始终从最高值中减去最低值。 因为我不希望结果为负值,有时最高值在第一列 (PaternalOrgin) 中,有时在第二列 (MaternalOrigin) 中。

输入:

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   

拜托,有人可以告诉我吗? 谢谢

我们可以用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

或者我们可以将其分配给'Results'

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