如何用指定DataFrame匹配姓名性别,无匹配标记为Neutral
R语言实现姓名性别匹配并填充默认值
以下提供两种常用方法来实现需求:
方法一:Base R 原生实现
利用merge()函数进行左连接,再替换缺失值:
# 执行左连接,保留dfnames的所有行 merged_result <- merge(dfnames, dfgender, by.x = "names", by.y = "name", all.x = TRUE) # 将匹配不到的NA替换为"Neutral" merged_result$gender <- ifelse(is.na(merged_result$gender), "Neutral", merged_result$gender) # 重命名列名以符合预期输出 colnames(merged_result)[colnames(merged_result) == "names"] <- "name" # 查看最终结果 merged_result
方法二:Tidyverse(dplyr)实现
借助dplyr包的管道语法,代码更简洁直观:
library(dplyr) final_df <- dfnames %>% # 统一姓名列的列名 rename(name = names) %>% # 与性别映射表左连接 left_join(dfgender, by = "name") %>% # 将缺失的性别值替换为"Neutral" mutate(gender = replace(gender, is.na(gender), "Neutral")) # 查看最终结果 final_df
两种方法最终都会得到符合预期的DataFrame:
# 输出结果 # name gender # 1 Helen F # 2 Von Neutral # 3 Erik M # 4 Brook Neutral
内容的提问来源于stack exchange,提问作者Erik Brole
相关产品推荐
相关产品推荐

