首页 > 解决方案 > R. 如果 B 列以字符开头,则替换 A 列的元素

问题描述

我有一个数据框 A(真正的 A 有 1,000,000 行):

model    term
2    SEX
2    GAN
2    GT_rs354
6    SEX
6    GAN
6    GT_rs222
3    SEX
3    GAN
3    GT_rs87623

使用 R,我想创建一个新列“SNP”:每当列“term”有一个以“GT_”开头的元素时,我希望新列“SNP”用相应的“GT_x”替换所有出现的“model” “ 元素。我会得到:

model    term    SNP
2    SEX    GT_rs354
2    GAN    GT_rs354
2    GT_rs354    GT_rs354
6    SEX    GT_rs222
6    GAN    GT_rs222
6    GT_rs222    GT_rs222
3    SEX    GT_rs87623
3    GAN    GT_rs87623
3    GT_rs87623    GT_rs87623

标签: rdataframereplace

解决方案


一个dplyr解决方案

library(dplyr)
df %>% group_by(model) %>% mutate(SNP = term[which(grepl("^GT_", term))])

推荐阅读