R语言如何基于现有列值为数据集重复行创建规则ID列
按规则生成耳侧唯一标识字段
需求说明
现有患者检测数据集,每个Study_ID对应2条记录,分别代表左耳、右耳的检测结果,需要新增ear_ID字段,格式为「患者Study_ID_耳侧缩写」,左耳对应L,右耳对应R。
原始数据
数据预览:
Study_ID ear 1 100 Left 2 100 Right 3 200 Left 4 200 Right 5 300 Left 6 300 Right
可复现构造代码:
data <- data.frame( Study_ID = c("100","100","200","200","300","300"), ear = c("Left","Right","Left","Right","Left","Right") )
目标输出
新增字段后最终数据结构:
Study_ID ear ear_ID 1 100 Left 100_L 2 100 Right 100_R 3 200 Left 200_L 4 200 Right 200_R 5 300 Left 300_L 6 300 Right 300_R
实现代码
基础R方案(无需安装额外包)
直接通过条件判断匹配耳侧缩写,再和Study_ID拼接即可:
data$ear_ID <- paste0(data$Study_ID, "_", ifelse(data$ear == "Left", "L", "R"))
运行完直接打印data就能得到结果。
dplyr方案(tidyverse工作流适用)
如果日常用dplyr处理数据,可以用mutate新增列:
# 首次使用需先安装:install.packages("dplyr") library(dplyr) data <- data %>% mutate(ear_ID = paste0(Study_ID, "_", ifelse(ear == "Left", "L", "R")))
提示:如果数据中
ear列存在大小写不统一、多余空格等情况,可先通过trimws()、tolower()等函数做文本标准化,避免匹配错误。
内容的提问来源于stack exchange,提问作者sabc04
相关产品推荐
相关产品推荐

