重新排序 tibble 中的一行 - 将其移至最后一行
Reorder one row in tibble - move it to the last row
如何重新排列 tibble 中的行?
我希望对行重新排序,以便:x = "c" 的行转到小标题的底部,其他所有内容保持不变。
library(dplyr)
tbl <- tibble(x = c("a", "b", "c", "d", "e", "f", "g", "h"),
y = 1:8)
tbl |> dplyr::arrange(x == "c")
dplyr::arrange() 的替代方法,使用基数 R:
tbl[order(tbl$x == "c"), ] # Thanks to Merijn van Tilborg
输出:
# x y
# <chr> <int>
# 1 a 1
# 2 b 2
# 3 d 4
# 4 e 5
# 5 f 6
# 6 g 7
# 7 h 8
# 8 c 3
使用 forcats,转换为具有最后一个 c 的因子,然后是 arrange。这不会更改列 x.
的 class
library(forcats)
tbl %>%
arrange(fct_relevel(x, "c", after = Inf))
# # A tibble: 8 x 2
# x y
# <chr> <int>
# 1 a 1
# 2 b 2
# 3 d 4
# 4 e 5
# 5 f 6
# 6 g 7
# 7 h 8
# 8 c 3
如果 x 的顺序很重要,最好将其保留为因子 class,下面将把 class 从字符更改为因子最后是 c:
tbl %>%
mutate(x = fct_relevel(x, "c", after = Inf)) %>%
arrange(x)
如何重新排列 tibble 中的行?
我希望对行重新排序,以便:x = "c" 的行转到小标题的底部,其他所有内容保持不变。
library(dplyr)
tbl <- tibble(x = c("a", "b", "c", "d", "e", "f", "g", "h"),
y = 1:8)
tbl |> dplyr::arrange(x == "c")
dplyr::arrange() 的替代方法,使用基数 R:
tbl[order(tbl$x == "c"), ] # Thanks to Merijn van Tilborg
输出:
# x y
# <chr> <int>
# 1 a 1
# 2 b 2
# 3 d 4
# 4 e 5
# 5 f 6
# 6 g 7
# 7 h 8
# 8 c 3
使用 forcats,转换为具有最后一个 c 的因子,然后是 arrange。这不会更改列 x.
的 classlibrary(forcats)
tbl %>%
arrange(fct_relevel(x, "c", after = Inf))
# # A tibble: 8 x 2
# x y
# <chr> <int>
# 1 a 1
# 2 b 2
# 3 d 4
# 4 e 5
# 5 f 6
# 6 g 7
# 7 h 8
# 8 c 3
如果 x 的顺序很重要,最好将其保留为因子 class,下面将把 class 从字符更改为因子最后是 c:
tbl %>%
mutate(x = fct_relevel(x, "c", after = Inf)) %>%
arrange(x)