【问题标题】:Is there an R function or command to extract rows between certain value?是否有 R 函数或命令来提取特定值之间的行?
【发布时间】:2022-09-24 23:20:42
【问题描述】:

我有一个看起来像这样的数据框:

my_data <- structure(list(chr = c(\"chr14\", \"chr14\", \"chr14\", \"chr14\", \"chr14\", \"chr14\", \"chr14\", \"chr14\", \"chr14\", \"chr14\"), start = c(1245841L, 4729880L, 5042400L, 6129542L, 6130563L, 6131756L, 6135211L, 6139073L, 6144706L, 6145560L), end = c(1245858L, 4729897L, 5042417L, 6129559L, 6130580L, 6131773L, 6135228L, 6139090L, 6144723L, 6145577L)), class = \"data.frame\", row.names = c(NA, -10L))

我现在希望创建一个新的 data_frame,其中仅存在某个选定的行组合。 我想创建一个新的数据框,其中只有起始值 >= 6129542 和结束值 <= 6145577 的行。

我试过这个组合,但它不起作用

library(tidyverse)    
new_data <- my_data %>% filter(start >= 6129542 |
                               end <= 6145577)

你能帮我找到解决办法吗?

    标签: r dataframe tidyverse


    【解决方案1】:

    基本R 选项通过对两列进行子集设置,如下所示:

    my_data <- structure(list(chr = c("chr14", "chr14", "chr14", "chr14", "chr14",  "chr14", "chr14", "chr14", "chr14", "chr14"), start = c(1245841L,  4729880L, 5042400L, 6129542L, 6130563L, 6131756L, 6135211L, 6139073L,  6144706L, 6145560L), end = c(1245858L, 4729897L, 5042417L, 6129559L,  6130580L, 6131773L, 6135228L, 6139090L, 6144723L, 6145577L)), class = "data.frame", row.names = c(NA,  -10L))
    
    my_data[with(my_data, start >= 6129542 & end <= 6145577), ]
    #>      chr   start     end
    #> 4  chr14 6129542 6129559
    #> 5  chr14 6130563 6130580
    #> 6  chr14 6131756 6131773
    #> 7  chr14 6135211 6135228
    #> 8  chr14 6139073 6139090
    #> 9  chr14 6144706 6144723
    #> 10 chr14 6145560 6145577
    

    创建于 2022-09-24,reprex v2.0.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2013-01-05
      • 2020-07-10
      • 2021-03-18
      • 2020-05-10
      相关资源
      最近更新 更多