【问题标题】:Matching Every Nth Element of A Dataframe匹配数据框的每 N 个元素
【发布时间】:2017-11-03 18:13:55
【问题描述】:

我在 R 问题中可能是一个非常愚蠢的grepl。抱歉,因为这看起来应该很容易 - 我显然只是错过了一些东西。

我有一个字符 data.frame,我们称之为test。部分test 打印在下面:

    userid  st_dt_tm           ctnid
PULCHNT     11/1/2017 16:54   503050724908.00
PULCHNT     11/1/2017 17:47   503057701271.00
KNIGHTJ     11/1/2017 22:13   503050726708.00
CACEREB     11/1/2017 16:59   503050719729.00
CONCEPM     11/1/2017 19:33   503050725209.00
HWHITAK     11/1/2017 23:08   93050704897.00
OPOKUGE     11/1/2017 11:11   503040703209.00
NIEMIES     11/1/2017 11:59   503050700514.00
CACEREB     11/1/2017 13:23   503050710931.00
FOSTERV     11/1/2017 20:22   503050715018.00

我想查看数据框的ctn_id 部分并执行测试说:如果ctn_id 的第6 个字符是7,则显示结果。

我一直在尝试使用sub 来完成此操作,但是拥有特定的元素编号对我来说有点复杂。

【问题讨论】:

  • 我认为你不需要greplsubstr 会更有帮助
  • 如何在 substr 中找到特定字符,在我的情况下,我需要第六个字符为 7。所以可能是 substr(test$ctn_id, 6, 6),其中 6 和 6 是开始和结束??
  • 您阅读帮助文件了吗?例如substr(x = c('fooba7haz', 'fooba8haz'), start = 6, stop = 6) == "7"
  • 是的,但它是ctnid,没有下划线。试试inx <- substr(test$ctnid, 6, 6) == "7"; test[inx, ]

标签: r gsub grepl


【解决方案1】:

使用grepl 匹配字符串开头的任意五个字符,然后是数字7

grepl("^.{5}7", df1$ctnid)
df1$ctnid[grepl("^.{5}7", df1$ctnid)]

[1] 503057701271  93050704897

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多