检查子字符串是否出现在单独的列中

时间:2016-09-20 02:04:15

标签: r substring string-matching

我需要检查我的数据是否包含基准研究没有的名称。 我遇到的问题是我的名字被截断,所以通常是基准研究报告的名称的子串。

例如,我的数据的截断版本:

      Benchmark             `My Data`
Southern Corp                Avista
American Electric Power      Atmos
Atmos Energy                 Southern
Delta Natural Gas Co Inc     DUET
Avista Corp                  Duke Energy
Duke Energy Corp             American Electric
Pepco Holdings               Nextra Energy

例如,您可以看到在“我的数据”中,该名称被报告为“南方”,但在基准中它被报告为“南方公司”,同样,我的数据将报告“杜克能源”为“杜克能源公司“。

我需要弄清楚我的数据集是否包含基准测试集所没有的任何名称。

所以我需要一个标志或帮助栏,它告诉我我的数据集包含“Nextra Energy”,但基准测试没有。

我希望输出如下:

    Benchmark               `My Data`            Not in Benchmark
Southern Corp                Avista                      0
American Electric Power      Atmos                       0
Atmos Energy                 Southern                    0
Delta Natural Gas Co Inc     DUET                        1
Avista Corp                  Duke Energy                 0
Duke Energy Corp             American Electric           0
Pepco Holdings               Nextra Energy               1 

谢谢!

1 个答案:

答案 0 :(得分:0)

dat$flag <- NA
for(i in 1:nrow(dat)){
  if(any(grepl(dat$Data[i],dat$Benchmark))){
    dat$flag[i] <- 0
  } else{
    dat$flag[i] <- 1
  }
}

dat
                 Benchmark              Data flag
1            Southern Corp            Avista    0
2  American Electric Power             Atmos    0
3             Atmos Energy          Southern    0
4 Delta Natural Gas Co Inc              DUET    1
5              Avista Corp       Duke Energy    0
6         Duke Energy Corp American Electric    0
7           Pepco Holdings     Nextra Energy    1