我有一個資料框架的例子:
dd <- data. frame(a = factor(c("Hi"/span>。 "Hi", "low"。 "Low"),
levels = c("low"。 "Hi")。 訂購= T),
b = c(1。 2。 3,4))
滴滴
# a b
# 1 嗨 1
# 2 Hi 2 # 2 Hi 2
# 3 低3 # 3 低3
# 4 Low 4 # 3 Low 4
如果列a的值為 "Hi",我想將列b以升序排列;如果列a的值為 "Low",我想將列b以降序排列。我希望得到任何幫助!
uj5u.com熱心網友回復:
一種選擇是根據'a'的值利用desc和rev
library(dplyr)
dd %>%。
arrange(match(a, c("Hi", "Low")),
case_when(a == "low" ~ desc(b)。 TRUE ~ rev(desc(b))))。
輸出
a b
1 嗨 1
2 Hi 2
3 Low 4
4 低 3
或者另一種選擇是根據'a'中的值改變符號來轉換數字列
dd %>%
安排(match(a, c("Hi", "Low"))。 b * c(1。 -1)[1 (a == "Low")] )
a b
1 Hi 1
2 Hi 2
3 Low 4
4 低 3
uj5u.com熱心網友回復:
我們可以使用dplyr::arrange與一個ifelse條件。我們可以使用基本的R rev函式,而不是使用desc:
library(dplyr)
dd %>%。
arrange(a, ifelse(a == "Hi"。 b。 rev(b)) %>。 %
arrange(rev(a))
輸出:
a b
1 嗨 1
2 Hi 2
3 Low 4
4 低 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/322183.html
標籤:
上一篇:在r中過濾和選擇資料集
