根据现有模式 R 创建新列

create new column based on existing pattern R

我有这个

tableRules <- as.data.table(data.frame(object_name = c("instr_asset_row","functional_cat","ref_sector_second")))

listDimPoss <- c("instr_asset","ref_sector","functional_cat")

我想在 tableRules 中创建一个新列:tableRules$DIMENSION 如果该值包含 listdimPoss 中列出的模式,它将检查 tablerules$object_name。 如果是,那么我希望 tableRules$Rimension 的值是 listDimPoss 中列出的模式。 所以这里我想要一个结果

tableRules$DIMENSION <- c("instr_asset","functional_cat","ref_sector")))

我们可以使用regex_left_join

library(data.table)
library(fuzzyjoin)
regex_left_join(tableRules,  data.table(DIMENSION = listDimPoss), 
     by = c("object_name" = "DIMENSION"))
        object_name      DIMENSION
1   instr_asset_row    instr_asset
2    functional_cat functional_cat
3 ref_sector_second     ref_sector