如何对数据框中的行进行排序以获得r中某些列中的最大净值
How to order rows in data frame for maximun net values in some columns in r
我有这个数据框
a <- c("5", 7, 9, "11")
b <- c("-8", "-10", -3, -1)
c <- c(-4, -1, "-6", "3")
df <- data.frame(a,b,c)
a b c
1 5 -8 -4
2 7 -10 -1
3 9 -3 -6
4 11 -1 3
然后我希望行按照其中的最大净值排序,与列无关。我的意思是,我期待这样的事情:
a b c
4 11 -1 3
2 7 -10 -1
3 9 -3 -6
1 5 -8 -4
如您所见,它已排序,因为第一行的值为 11,第二行 (-10),第三行 (9),第四行 (-8)。
这个解决方案可行,但不是最优雅的解决方案
libray(dplyr)
df %>%
rowwise() %>%
mutate(max_row_value = max(abs(c_across(a:c)))) %>%
arrange(-max_row_value)
# A tibble: 4 x 4
# Rowwise:
a b c max_row_value
<dbl> <dbl> <dbl> <dbl>
1 11 -1 3 11
2 7 -10 -1 10
3 9 -3 -6 9
4 5 -8 -4 8
你可以得到绝对值的行最大值并排序。
df[order(-do.call(pmax, abs(df))), ]
# a b c
#4 11 -1 3
#2 7 -10 -1
#3 9 -3 -6
#1 5 -8 -4
我有这个数据框
a <- c("5", 7, 9, "11")
b <- c("-8", "-10", -3, -1)
c <- c(-4, -1, "-6", "3")
df <- data.frame(a,b,c)
a b c
1 5 -8 -4
2 7 -10 -1
3 9 -3 -6
4 11 -1 3
然后我希望行按照其中的最大净值排序,与列无关。我的意思是,我期待这样的事情:
a b c
4 11 -1 3
2 7 -10 -1
3 9 -3 -6
1 5 -8 -4
如您所见,它已排序,因为第一行的值为 11,第二行 (-10),第三行 (9),第四行 (-8)。
这个解决方案可行,但不是最优雅的解决方案
libray(dplyr)
df %>%
rowwise() %>%
mutate(max_row_value = max(abs(c_across(a:c)))) %>%
arrange(-max_row_value)
# A tibble: 4 x 4
# Rowwise:
a b c max_row_value
<dbl> <dbl> <dbl> <dbl>
1 11 -1 3 11
2 7 -10 -1 10
3 9 -3 -6 9
4 5 -8 -4 8
你可以得到绝对值的行最大值并排序。
df[order(-do.call(pmax, abs(df))), ]
# a b c
#4 11 -1 3
#2 7 -10 -1
#3 9 -3 -6
#1 5 -8 -4