【问题标题】:how to select the closest value to zero (positive and negative) in data frame如何在数据框中选择最接近零的值(正数和负数)
【发布时间】:2021-11-15 00:34:31
【问题描述】:

我有这种df

f <- data.frame(gene=c("gene1", "gene1", "gene2", "gene2", "gene2", "gene3","gene3", "gene3"), 
                distance = c(10, -5, 40, -60, 0, -150, 5, -200))

我想只选择距离最接近零(但不是零)的基因以获得这个结果

gene   distance
gene1    -5
gene2    40
gene3     5

我试过了

distances <- f %>%
  group_by(gene) %>%
  filter(distance == min(abs(distance)) & distance != 0) %>%
  ungroup

但它没有按预期工作。任何建议都会很棒!

【问题讨论】:

    标签: r filter dplyr


    【解决方案1】:

    我们可以将不为 0 的 distance 值子集化,并选择具有最小值的行。

    library(dplyr)
    
    f %>%
      group_by(gene) %>%
      filter(abs(distance) == min(abs(distance[distance != 0]))) %>%
      ungroup
    
    #  gene  distance
    #  <chr>    <dbl>
    #1 gene1       -5
    #2 gene2       40
    #3 gene3        5
    

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2020-12-16
      • 2022-01-21
      • 1970-01-01
      • 2020-02-07
      相关资源
      最近更新 更多