【问题标题】:Move any row to bottom of dataframe based on row index in pipe根据管道中的行索引将任何行移动到数据框的底部
【发布时间】:2021-03-11 00:12:20
【问题描述】:

如何使用 dplyr 管道根据行索引将任何行移动到数据框的底部?

【问题讨论】:

    标签: r dplyr pipe tidyverse


    【解决方案1】:

    这可以用两行来完成。第一行使用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))
    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2021-05-19
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2016-09-05
      相关资源
      最近更新 更多