【问题标题】:Filter a data frame by part of name in column按列中名称的一部分过滤数据框
【发布时间】:2020-02-26 15:19:18
【问题描述】:

下面是我的示例。

Name <- c("HU-5-A", "HU-6-C", "CE-5-A", "LE-3-C", "LE-4-A", "CE-9-B")
x <- c(rnorm(6))
y <- c(rnorm(6))
df <- data.frame(cbind(Name, x, y))

我想过滤我的 df,但只过滤 Name 列中的公共部分,因此结果将是

Name         x         y
LE-3-C 0.6087576 2.3199352
LE-4-A 0.4040382 0.1556805

感谢您的帮助。

【问题讨论】:

  • df[grepl("^LE", df$Name),]dplyr::filter(df, grepl("^LE", df$Name))
  • 使用像@r2evans 这样的正则表达式似乎是最直接的。您还可以使用字符串函数拆分df$Name 列,然后按“常见”部分进行分组。
  • 你的意思是按前两个字母分组吗? split(df, substr(df$Name, 1, 2))

标签: r data-representation


【解决方案1】:

如果你想留在 tidyverse 世界,stringr 也可以帮助解决这个问题。

library(tidyverse)
df %>% 
   filter(str_detect(Name,'LE'))

    Name                  x                 y
1 LE-3-C  0.632601346894576 0.573187971758856
2 LE-4-A -0.818879986489542 0.284050547258268

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2019-06-09
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多