【发布时间】:2021-03-11 00:12:20
【问题描述】:
如何使用 dplyr 管道根据行索引将任何行移动到数据框的底部?
【问题讨论】:
如何使用 dplyr 管道根据行索引将任何行移动到数据框的底部?
【问题讨论】:
这可以用两行来完成。第一行使用bind_rows() 和slice() 将所需行复制到数据帧的末尾。第二行使用slice() 删除现在重复行的第一个实例。
这是一个将第二行移到末尾的示例:
library(dplyr)
df = tibble(x = letters[1:4], y = 1:4)
df %>%
bind_rows(slice(., 2)) %>%
slice(-2)
返回:
# A tibble: 4 x 2
x y
<chr> <int>
1 a 1
2 c 3
3 d 4
4 b 2
【讨论】:
slice: slice(c(setdiff(row_number(), 2), 2))
我知道该问题明确指出“基于行索引”,但是,我在试图弄清楚如何基于 字符执行此操作的上下文中发现了此线程匹配,我没有找到任何指导。因此,我自己想出了一些东西(在Oliver Oliver 的帖子的帮助下 - 谢谢!),我想分享一下。
library(dplyr)
df = tibble(x = letters[1:4], y = 1:4)
df %>%
bind_rows(slice(., which(x != "b")), slice(., which(x == "b"))) %>%
tail(nrow(.)/2)
【讨论】: