【问题标题】:R - Partial string matching subsetR - 部分字符串匹配子集
【发布时间】:2016-10-18 13:46:59
【问题描述】:

我有一个名为 LeaseDF 的数据框。我希望提取 Team_Code 列包含字母“t”的所有观察结果。我的简单代码如下。不知何故没有返回任何东西。我也尝试过使用 grepl 函数进行循环,并使用 grepl 进行 lapply 无济于事。谢谢。

subset <- LeaseDF[grep("^t-", LeaseDF$TEAM_CODE),]

【问题讨论】:

  • 如果您只想检查字母“t”的出现,为什么还要使用正则表达式"^t-"?

标签: r dataframe rstudio


【解决方案1】:

我假设“pull”是指子集?

由于您没有添加数据,所以我给您举个例子,我使用包 sqldf

df <- data.frame(name = c('monday','tuesday','wednesday', 'thursday', 'friday'))
require(sqldf)
# Select specific values from a column i.e., containing letter "t"
sqldf("select * from df where name LIKE '%t%'")
# And output
     name
1  tuesday
2 thursday

或使用grep

df$name[grep("t", df$name) ]
# And output
[1] tuesday  thursday
Levels: friday monday thursday tuesday wednesday

# OR use ^t if you want beginning of the string
df[grep("^t", df$name), ] 

或者使用grepl,你也可以排除不匹配的观察结果

df[grepl("t", df$name), , drop = FALSE]
# Output
      name
2  tuesday
4 thursday

【讨论】:

  • 是的,我的意思是子集。好的,这是有道理的。谢谢!我最终自己使用了 sqldf 包。但我一直在寻找一种没有那个包的方法。
  • 我很乐意提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
相关资源
最近更新 更多