在R中合并RACE与ETHNICITY两个分类变量创建新变量
在R中合并RACE和ETHNICITY变量的方法
在R里合并这两个变量有两种常用且高效的方式,分别基于基础R和tidyverse工具链,以下是具体实现:
基础R方法(无需额外包)
利用paste()函数直接拼接两个变量,指定空格作为分隔符即可。先构造示例数据集,再生成新列:
# 构造示例数据集 df <- data.frame( RACE = c("Black", "White", "Asian", "Black"), ETHNICITY = c("Non-Hispanic", "Hispanic", "Non-Hispanic", "Hispanic"), stringsAsFactors = FALSE ) # 创建"RACE/ETHNICITY"新列 df$`RACE/ETHNICITY` <- paste(df$RACE, df$ETHNICITY, sep = " ")
运行后数据集会新增一列,示例输出如下:
RACE ETHNICITY RACE/ETHNICITY 1 Black Non-Hispanic Black Non-Hispanic 2 White Hispanic White Hispanic 3 Asian Non-Hispanic Asian Non-Hispanic 4 Black Hispanic Black Hispanic
如果数据中存在缺失值,可添加na.rm = TRUE参数忽略缺失项(会自动去掉缺失的部分):
df$`RACE/ETHNICITY` <- paste(df$RACE, df$ETHNICITY, sep = " ", na.rm = TRUE)
tidyverse方法(推荐用于数据清洗流)
如果日常使用tidyverse工具包,可结合dplyr::mutate()和stringr::str_c()实现,代码更符合管道化风格:
# 加载tidyverse包(若未安装先运行install.packages("tidyverse")) library(tidyverse) # 通过管道生成新列 df <- df %>% mutate(`RACE/ETHNICITY` = str_c(RACE, ETHNICITY, sep = " "))
str_c()的效果和paste()一致,在tidyverse的工作流中更易和其他数据操作(如筛选、分组)结合使用。
内容的提问来源于stack exchange,提问作者cake2244
相关产品推荐
相关产品推荐

