You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言为数据表生成符合规则的identifiedID列?

生成identifiedID列的R语言实现

需求说明

我们需要为包含rs10330、rs18976、rs7498三列的数据表新增identifiedID列,规则如下:

  • 统计每行中满足以下条件的列数:
    • rs10330取值为AG或GG
    • rs18976取值为GT或TT
    • rs7498取值为AT或TT
  • 根据统计结果赋值:0列满足则identifiedID=0,1列满足则=1,2列满足则=2,3列满足则=3

示例数据

datmp <- data.frame(rs10330=c('AA','AG','GG','AG','AA'), 
                    rs18976=c('GG','GT','GT','GG','GG'), 
                    rs7498=c( 'AA','AT','TT','AT','TT')) 
identifiedID <- c(0,3,3,2,1) 
datmp2 <- data.frame(datmp, identifiedID)

实现代码

基础R原生实现

直接通过逻辑判断生成布尔向量,再按行求和得到目标列:

# 生成各列的条件判断向量(TRUE代表满足条件,对应数值1;FALSE对应0)
cond_rs10330 <- datmp$rs10330 %in% c("AG", "GG")
cond_rs18976 <- datmp$rs18976 %in% c("GT", "TT")
cond_rs7498 <- datmp$rs7498 %in% c("AT", "TT")

# 按行求和,直接得到满足条件的列数,即identifiedID的值
datmp$identifiedID <- cond_rs10330 + cond_rs18976 + cond_rs7498

# 查看结果
print(datmp)

dplyr管道式实现(适合tidyverse工作流)

如果习惯使用tidyverse系列工具,可通过dplyr的管道语法完成:

library(dplyr)

datmp <- datmp %>%
  mutate(
    # 生成临时条件列
    cond1 = rs10330 %in% c("AG", "GG"),
    cond2 = rs18976 %in% c("GT", "TT"),
    cond3 = rs7498 %in% c("AT", "TT"),
    # 对临时条件列按行求和得到目标列
    identifiedID = rowSums(select(., cond1, cond2, cond3))
  ) %>%
  select(-cond1, -cond2, -cond3) # 可选:删除临时条件列

# 查看结果
print(datmp)

两种方法均能生成与示例完全一致的identifiedID列,核心逻辑是将每个条件转化为布尔值后求和,直接对应需求中的计数规则。

内容的提问来源于stack exchange,提问作者pengxianglan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:24:48