R - 按组有条件地对多列进行升序或降序排序

2024-01-01

我以前没有遇到过这个问题。我想根据条件对组内的多列进行升序或降序排序

library(dplyr)
data <- mtcars %>% select(mpg, cyl, disp)

If cyl <= 4,我想排序mpg, disp(按该优先级)按升序排列。如果cyl > 4,我想排序mpg, disp按降序排列。

expected <- rbind(
    filter(data, cyl <= 4) %>% arrange(mpg, disp),
    filter(data, cyl > 4) %>% arrange(cyl, desc(mpg), desc(disp))
)

将每个可能反转的变量乘以sign(4.1 - cyl) :

mtcars %>% arrange(cyl, sign(4.1 - cyl) * mpg, sign(4.1 - cyl) * disp)

If mpg,比如说,不是数字,仍然可以通过替换来做到这一点mpg with xtfrm(mpg)这会将其映射为数字。看?xtfrm .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R - 按组有条件地对多列进行升序或降序排序 的相关文章

随机推荐