【问题标题】:Filter rows in R by range of character numbers按字符数范围过滤 R 中的行
【发布时间】:2021-02-27 23:37:48
【问题描述】:

我有一个问题我一直在摸索一分钟。我有一个数据框,其中有一列字符的格式为 1146-01、1148-02、1132-11 等。前四位数字是朱利安数,后两位代表样本数。我想根据月份进行过滤(即 2 月份是 1132-:1159:)我试过这个:

dates <- c(1132:1159)
dates <- as.character(dates)

new <- data %>%
  filter(str_detect(Sample.Number, dates)) %>%

以及使用 %in% 运算符,但没有这样的运气。

感谢您的帮助!

【问题讨论】:

标签: r string filter dplyr


【解决方案1】:

我们可以使用paste/str_ccollapse = "|"str_detect 中搜索其中一个

library(stringr)
library(dplyr)
data %>%
     filter(str_detect(Sample.Number, str_c(dates, collapse="|")))

或者另一种选择是使用parse_number 提取- 之前的数字并使用%in%

data %>%
     filter(readr::parse_number(Sample.Number) %in% dates)

或者substrbetween

data %>%
     filter(between(as.numeric(substr(Sample.Number)),
            as.numeric(first(dates), as.numeric(last(dates))))

 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2012-06-17
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多