首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过匹配字符串筛选data.frame?

如何通过匹配字符串筛选data.frame?
EN

Stack Overflow用户
提问于 2020-07-07 21:44:44
回答 1查看 79关注 0票数 1

我有这样的结构:

代码语言:javascript
复制
coop <- structure(list(razao_social = c("COOPERATIVA AGROINDUSTRIAL ALFA", 
"COOPERATIVA MISTA DOS PRODUTORES DE LEITE DE MORRINHOS", "COOPERATIVA DE TRABALHO DOS PRESTADORES DE SERVICOS EM CONDOMINIOS - CONDOMINIUN", 
"COOPERATIVA EMPRESARIAL RURAL DE SAPUCARANA - COERSA", "COOPERATIVA AGROINDUSTRIAL ALFA", 
"COASUL COOPERATIVA AGROINDUSTRIAL", "COOPERATIVA DOS PLANTADORES DE CANA DA ZONA LENCOIS PTA", 
"COOPERATIVA AGROPECUARIA CENTRO SERRANA", "COOPERATIVA AGROINDUSTRIAL COOPERJA", 
"COOPERATIVA DOS CAFEICULTORES DA REGIAO DE GARCA", "COOPERATIVA DA CONSTRUCAO CIVIL DO ESTADO DE SERGIPE", 
"COOPERATIVA REG AGRO IND DE S DOMINGOS DO PRATA LTDA", "COOPERATIVA REG AGRO IND DE S DOMINGOS DO PRATA LTDA", 
"COOPERATIVA AGROPECUARIA VIDEIRENSE", "COOPERATIVA REGIONAL AGROPECUARIA VALE DO ITAJAI","COOPERATIVA DE TRABALHO E PRODUCAO ESPERACA"
), cnae_fiscal = c(4623109L, 4789099L, 9430800L, 9430800L, 4623108L, 
4623199L, 4789099L, 4789099L, 4789099L, 4789099L, 4789099L, 4633801L, 
4633801L, 4632001L, 4632001L,9430800L)), row.names = c(NA, 16L), class = "data.frame")


keywords <- c("abacaxi", "abate", "abatidas", "acabamento", "acácia", "açaí", 
"açúcar", "adoçantes", "adubos", "agentes", "aglomerada", 
"agr", "água", "aguardente", "aguardentes", "águas", "álcalis", 
"álcool", "alcoólicas", "algodão", "alho", "alimentação", 
"alimentares", "alimentícias", "alimentícios", "alimentos", 
"alopáticos", "ambiental", "amendoim", "amidos", "amiláceos", 
"animais", "animal", "aparelhos", "apicultura", "aquáticos", 
"aquicultura", "aqüicultura", "ar", "arroz", "artificiais", 
"árvores", "asininos", "atacadista", "atacado", "aves", "baía", 
"balas", "bambu", "banana", "banho", "base", "batata", "bebidas", 
"beneficiamento", "beterraba", "bicho", "biocombustíveis", "biscoitos", 
"bolachas", "bolos", "bolsas", "bombons", "bordar", "borracha", 
"bovinas", "bovinos", "bufalinos", "caça", "cacau", "café", 
"cafeeiro", "cafeicultor", "caju", "calçados", "cama", "camarões", 
"caminhões", "cana", "caprinos", "carburante", "carne", "carnes", 
"carpintaria", "carrocerias", "cartão", "cartolina", "carvão", 
"casas", "casca", "castanha", "cebola", "celulose", "celulósicas", 
"cereais", "cerveja", "cervejas", "chá", "charutos", "chás", 
"chocolates", "chope", "chopes", "cigarrilhas", "cigarros", "cítricos", 
"cloro", "coco", "coelhos", "colchões", "colheita", "combustíveis", 
"comerciais", "comestíveis", "concentrados", "condimento", "confeccionadas", 
"confeitaria", "confeitos", "conservação", "conservas", "contrato", 
"controle", "cordoaria", "corte", "cortiça", "costurar", "couro", 
"couros", "cristalizadas", "crustáceos", "cultivo", "cultivos", 
"curtimento", "defensivos", "dendê", "desdobramento", "desinfestantes", 
"destiladas", "dextrose", "dietéticos", "doce", "domissanitários", 
"equinos", "erva", "escargô", "especiarias", "espécies", "especificadas", 
"estamparia", "estimação", "estruturas", "eucalipto", "extração", 
"farinha", "farinhas", "farmacêuticas", "farmacêuticos", "farmoquímicos", 
"féculas", "feijão", "fermentos", "ferramenta", "fertilizantes", 
"fibras", "fios", "fitoterápicos", "flores", "florestais", "florestal", 
"florestas", "floricultura", "folha", "formação", "formulários", 
"forrageiras", "frangos", "frescos", "frigorífico", "frutas", 
"frutos", "fumo", "galináceos", "gases", "gelados", "gelo", 
"girassol", "gorduras", "gramas", "grão", "guaraná", "herbáceo", 
"higiênico", "higiênicos", "homeopáticos", "hortaliças", 
"horticultura", "hortifrutigranjeiros", "humano", "índia", "inglesa", 
"inseminação", "íntimas", "irrigação", "isotônicas", "jacaré", 
"lã", "laminada", "laminados", "laranja", "lãs", "látex", 
"laticínios", "lavoura", "lavouras", "legumes", "leguminosas", 
"leite", "leveduras", "linhas", "maçã", "madeira", "madeireiras", 
"madeireiros", "malas", "malha", "malharia", "malharias", "malte", 
"mamão", "mamona", "mandioca", "manejo", "manga", "mar", "maracujá", 
"margarina", "marinhos", "massas", "matadouro", "mate", "matérias", 
"medicamentos", "meias", "melancia", "melão", "mercadorias", 
"mexilhões", "milho", "mineral", "moagem", "moído", "molhos", 
"moluscos", "morango", "muares", "mudas", "nativas", "naturais", 
"oleaginosas", "óleo", "ondulado", "orgânicos", "organo", "origem", 
"ornamentais", "ostras", "ovinos", "ovos", "padaria", "pães", 
"palha", "palmito", "panificação", "papéis", "papel", "papelão", 
"pará", "pasto", "pecuária", "peixes", "peles", "pequenos", 
"permanente", "pesca", "pescado", "pescados", "pêssego", "pimenta", 
"pintos", "pinus", "plantadas", "plantas", "poda", "porte", "pratos", 
"produtos", "pulverização", "químicos", "raízes", "ranicultura", 
"rasteiro", "recreativos", "refinados", "refrescos", "refrigerante", 
"refrigerantes", "reino", "reses", "resseragem", "roupas", "rural", 
"salgada", "salobra", "seda", "sementes", "semicultivos", "seringueira", 
"serrarias", "serviço", "sisal", "soja", "solo", "solúvel", 
"sorvetes", "sucos", "suínas", "suínos", "tanoaria", "tapeçaria", 
"teca", "tecelagem", "tecidos", "temperos", "tênis", "termofixas", 
"termoplásticas", "têxteis", "têxtil", "texturização", "tomate", 
"torção", "torrado", "torrefação", "tosquiamento", "trançado", 
"trançados", "tratamento", "tricotagem", "tricotagens", "trigo", 
"tubérculos", "tubulares", "uísque", "uva", "vegetais", "vegetal", 
"veículos", "verduras", "vestuário", "veterinário", "vime", 
"vinagres", "vinho", "vivas", "viveiros", "vivos")

我想要一个名为data.frame的coop_filter,在这里,我将使用来自coop的列,其中包含$razao_social有来自keywords的单词的行。

注意:

  1. coop真的很大,所以我想删除转移后的行。我认为这也将避免duplication.
  2. In,keywords,我有"agr“这个词。用这个词,我想过滤所有以"agr“开头的单词,如

等。

我一直在尝试这样的方法:

代码语言:javascript
复制
library(tidyverse)

coop$razao_social <- tolower(coop$razao_social)

lixo <- c("-",",",".","(",")","  ",";",":")
for(i in 1:length(lixo)){
  coop$razao_social <- str_replace_all(coop$razao_social, fixed(lixo[i]), " ") 
  ifelse(i!=length(lixo),print(i),print(i) & rm(lixo,i))
}


# Filter

coop_filter <- data.frame()

for(i in length(keywords)){
  
  eval(parse(text=paste0("
  
                 coop_filter <- str_extract_all(coop$razao_social, '^.+",keywords[i],".+')
  
  ")))
  
}

我已经和一个空的coop_filter堆在一起了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-07 22:52:13

使用此answer的解决方案。

代码语言:javascript
复制
coop %>%
  filter(str_detect(razao_social, paste(toupper(keywords), collapse = "|")))

#-----
                                              razao_social cnae_fiscal
1                          COOPERATIVA AGROINDUSTRIAL ALFA     4623109
2                          COOPERATIVA AGROINDUSTRIAL ALFA     4623108
3                        COASUL COOPERATIVA AGROINDUSTRIAL     4623199
4  COOPERATIVA DOS PLANTADORES DE CANA DA ZONA LENCOIS PTA     4789099
5                  COOPERATIVA AGROPECUARIA CENTRO SERRANA     4789099
6                      COOPERATIVA AGROINDUSTRIAL COOPERJA     4789099
7         COOPERATIVA DOS CAFEICULTORES DA REGIAO DE GARCA     4789099
8     COOPERATIVA REG AGRO IND DE S DOMINGOS DO PRATA LTDA     4633801
9     COOPERATIVA REG AGRO IND DE S DOMINGOS DO PRATA LTDA     4633801
10                     COOPERATIVA AGROPECUARIA VIDEIRENSE     4632001
11        COOPERATIVA REGIONAL AGROPECUARIA VALE DO ITAJAI     4632001
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62784381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档