【问题标题】:Filtering factor in dataframe数据框中的过滤因子
【发布时间】:2014-09-11 16:32:01
【问题描述】:

我有这张桌子:

Source                     Protocol
10.0.0.6                    IGMPv3
10.0.0.6                    SSDP
fe80::2998:5ae5:5e72:7f9    SSDP
fe80::2998:5ae5:5e72:7f9    SSDP
a0:48:1c:df:1b:1b           ARP
a0:48:1c:df:1b:1b           ARP
10.0.0.11                   TCP
10.0.0.11                   HTTP
Vmware_98:56:e6             ARP
Vmware_98:56:e6             ARP
12.0.0.11                   IGMPv6
23.3.1.11                   BROWSER

我需要过滤 MAC 地址而不进行硬编码,预期输出:

Source                     Protocol
10.0.0.6                    HTTP
10.0.0.6                    SSDP
10.0.0.11                   TCP
10.0.0.11                   HTTP
12.0.0.11                   IGMPv6
23.3.1.11                   BROWSER

【问题讨论】:

  • Mac地址是否总是以10.0.0.开头?
  • @DavidArenburg 嗯,不,它可以是 200、12、30 等等...
  • 总是以数字开头吗?
  • 是的,它以数字开头,但有些mac地址也以数字开头
  • @sy1993 令人困惑but some mac addresses start with number too。另外,它总是以数字结尾吗?

标签: regex r filtering


【解决方案1】:

你可以试试:

  dat[grep("^\\d+\\.\\d+\\.\\d+\\.\\d+$",dat$Source),]
  #        Source Protocol
  #1   10.0.0.6   IGMPv3
  #2   10.0.0.6     SSDP
  #7  10.0.0.11      TCP
  #8  10.0.0.11     HTTP
  #11 12.0.0.11   IGMPv6
  #12 23.3.1.11  BROWSER

【讨论】:

    【解决方案2】:
    (^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.*$)
    

    你也可以试试这个。只需抓住比赛或小组。查看演示。

    http://regex101.com/r/nB2lL9/7


    编辑: 在 R 中,它将类似于(假设 df 是您的数据集)

    df[grep("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}.*$", df$Source), ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2016-04-11
      相关资源
      最近更新 更多