【发布时间】:2021-07-11 22:43:52
【问题描述】:
我有一列人的姓氏和他们的首字母,在某些情况下,一个人可能会被列出两次,一次是一个首字母(例如 SMITH C),一次是两个首字母(例如 SMITH CD),我想替换SMITH C 的所有 SMITH CD 实例。
一个例子
df <- data.frame(
id = 1:7,
names = c("JOHN S", "JOHN SW", "JOHNSON S",
"SMITH C", "SMITH WC", "SMITH CD",
"HANK K"))
> df
id names
1 1 JOHN S
2 2 JOHN SW
3 3 JOHNSON S
4 4 SMITH C
5 5 SMITH WC
6 6 SMITH CD
7 7 HANK K
我可以为单个名称手动执行此操作,例如:
df$names <- gsub("SMITH CD", "SMITH C", df$names)
> df
id names
1 1 JOHN S
2 2 JOHN SW
3 3 JOHNSON S
4 4 SMITH C
5 5 SMITH WC
6 6 SMITH C
7 7 HANK K
但我的真实数据集包含约 4000 个名称,因此我希望能够:
- 以编程方式识别姓氏和第一个首字母匹配的情况,并且
- 一次性完成所有替换
对于上面的小例子 df,结果将是:
> df
id names
1 1 JOHN S
2 2 JOHN S
3 3 JOHNSON S
4 4 SMITH C
5 5 SMITH WC
6 6 SMITH C
7 7 HANK K
任何帮助将不胜感激。
【问题讨论】:
标签: r regex string text replace