且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

用另一个字符串有条件地替换字符串

更新时间:2023-02-12 18:08:04

有几种方法可以做到这一点:

There are several ways in which you can do this:

1:在基 R 中使用 ifelse 语句:

1: with ifelse statements in base R:

df$v1 <- ifelse(df$v1==df$c1, df$c1c2, df$v1)
df$v2 <- ifelse(df$v2==df$c2, df$c1c2, df$v2)

2:或带有子集分配:

df[df$v1==df$c1,"v1"] <- df[df$v1==df$c1,"c1c2"]
df[df$v2==df$c2,"v2"] <- df[df$v2==df$c2,"c1c2"]

3:或使用 data.table 包:

library(data.table)
setDT(df)[v1==c1, v1 := c1c2][v2==c2, v2 := c1c2]

这些解决方案中的每一个都给出了以下结果:

each of these solutions gives the following result:

> df
               v1            v2     c1     c2          c1c2
 1:        00035A        943567 00088E 63968E 00088E;63968E
 2: 00088E;63968E 00088E;63968E 00088E 63968E 00088E;63968E
 3: 00088E;63968E        925524 00088E 63968E 00088E;63968E
 4:        000361        237924 00088E 63968E 00088E;63968E
 5:        000361        83367A 00088E 63968E 00088E;63968E
 6:        00055X        49328R 00088E 63968E 00088E;63968E
 7:        00056N        87885Q 00088E 63968E 00088E;63968E
 8:        000794        69911G 00088E 63968E 00088E;63968E
 9:        23792A        001674 00088E 63968E 00088E;63968E
10:        63968E        17275R 00088E 63968E 00088E;63968E