数据帧中的过滤因子

时间:2014-09-11 08:12:23

标签: regex r filtering

我有这张桌子:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

(^\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), ]