从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))
我有下面的输入,我想减去两列,但我想始终从最高值中减去最低值。 因为我不希望结果为负值,有时最高值在第一列 (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))