首页 文章

消除与字符串匹配的数据帧行

提问于
浏览
2

我有一个数据框 rawdata ,其中的列包含生态信息 . 我试图消除列 LatinName 匹配物种向量的所有行,我已经有一些数据,并创建一个只有缺少数据的物种的新数据帧 . 所以,我想做的是:

matches <- c("Thunnus thynnus", "Balaenoptera musculus", "Homarus americanus") 
# obviously these are a random subset; the real vector has ~16,000 values 
rawdata_missing <- rawdata %>% filter(LatinName != "matches")

这不起作用,因为布尔运算符不能应用于字符串 . 或者我可以这样做:

rawdata_missing <- filter(rawdata, !grepl(matches, LatinName)

这不起作用,因为 !grepl 也不能使用字符串 .

我知道有很多方法我可以使用 LatinName 中的 LatinNamematches 中使用的行进行子集 rawdata ,但是我无法找到一个整齐的方法来分配 rawdata ,这样 LatinName 不在 matches 中 .

在此先感谢您的帮助!

2 回答

  • 2
    filteredData <- rawdata[!(rawdata$LatinName %in% Matches), ]
    
  • 0

    使用子集,粘贴,mapply和grepl的另一种方法是......

    fileteredData <- subset(rawdata,mapply(grepl,rawdata$LatinName,paste(Matches,collapse = "|")) == FALSE)

相关问题