如果B列包含字符串,请替换A列的值

时间:2019-12-11 21:31:29

标签: r dplyr

我有一个看起来像这样的数据框:

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

如果ColB包含ColD,我想用ColD的内容替换Puppy

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

谢谢!

1 个答案:

答案 0 :(得分:2)

一个选项是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][]