R中的列映射

问题描述 投票:0回答:1

我有两列。一列说'Degree'由来自Data frame A。的27000行字符组成

master's degree
master of business administration - mba
master of business administration (mba)
b.art.des
master of engineering (m.eng.)
master of engineering studies
master of business administration (mba)
bachelor’s degree
pgdip

现在我有3个单独的CSV文件(名称为UG_alias,PG_alias,phd_alias),其中包含本科,研究生和博士学位的别名,就像本科UG_alias包含以下条目一样

bachelor
bsc
b sc
btech
b tech
b engg
bbm
bfa
bs
llb
bds
b eng
bdes

对于研究生PG_alias包含

master
post graduation
msc
m sc
mba
m tech

和博士学位的phd别名包含

doctor
phd
ph d
dphil

现在我想将数据框A的Degree列映射到3个不同文件中的所有这3个别名,并生成这样的输出

pg
pg
pg
ug
pg
pg
pg
ug
pg

对于UG,我正在尝试使用代码。

A$Degree[A$Degree %like% UG_Alias$Degree] <- "pg"

但是无法实现所需的输出。请帮我找一些解决方案。

r mapping
1个回答
0
投票

如果您很好地了解使用哪些缩写以及提到哪些教育级别,您可以尝试对此进行扩展。

# create regular expressions
master <- "[Mm]aster|M\\.?([Ss][Cc]?|E(ng)?|A)"
bachelor <- "[Bb]achelor|BSc"

# conditional assignment using pattern matching
A$Degree[grepl(master, A$Degree) & grepl(master, B$Degree_Alias)] <- "pg"
A$Degree[grepl(bachelor, A$Degree) & grepl(bachelor, B$Degree_Alias)] <- "ug"
© www.soinside.com 2019 - 2024. All rights reserved.