gpt4 book ai didi

r - 按组在不同方向对数据框的列进行排序

转载 作者:行者123 更新时间:2023-12-02 01:58:57 27 4
gpt4 key购买 nike

我有一个示例数据框:

dd <- data.frame(a = factor(c("Hi", "Hi", "Low", "Low"), 
levels = c("Low", "Hi"), ordered = T),
b = c(1,2,3,4))
dd
# a b
# 1 Hi 1
# 2 Hi 2
# 3 Low 3
# 4 Low 4

如果 a 列的值为“Hi”,我希望按升序对 b 列进行排序;如果 a 列的值为“Low”,我希望按降序对 b 列进行排序。如果有任何帮助,我将不胜感激!

最佳答案

一种选择是根据“a”的值使用 descrev

library(dplyr)
dd %>%
arrange(match(a, c("Hi", "Low")),
case_when(a == "Low" ~ desc(b), TRUE ~ rev(desc(b))))

-输出

    a b
1 Hi 1
2 Hi 2
3 Low 4
4 Low 3

或者另一种选择是通过根据“a”中的值更改符号来转换数字列

dd %>% 
arrange(match(a, c("Hi", "Low")), b * c(1, -1)[1 + (a == "Low")])
a b
1 Hi 1
2 Hi 2
3 Low 4
4 Low 3

关于r - 按组在不同方向对数据框的列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69260709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com