首页 > 解决方案 > 如果 B 列包含字符串,则替换 A 列的值

问题描述

我有一个如下所示的数据框:

ColA    ColB    ColC    ColD
1   Dog Snow    Puppy_1
1   Cat Peanut  Kitten_1
14  Cat Smokey  Cat_9
125 Dog Fido    Dog_9
51  Fish    Jelly   Fish_5
12  Fish    Fishy   Beta_1

如果包含,我想ColBColD's 内容替换:ColDPuppy

ColA    ColB    ColC    ColD
1   Puppy_1 Snow    Puppy_1
1   Cat Peanut  Kitten_1
14  Cat Smokey  Cat_9
125 Dog Fido    Dog_9
51  Fish    Jelly   Fish_5
12  Fish    Fishy   Beta_1

谢谢!

标签: rdplyr

解决方案


一种选择是grep创建一个索引并进行分配以将“ColB”的值替换为“ColD”的值

i1 <- grep("Puppy", df1$ColD)
df1$ColB[i1] <- df1$ColD[i1]

或使用data.table

library(data.table)
setDT(df1)[grepl("Puppy", ColD), ColB := ColD][]

推荐阅读