R:行明智模式替换为来自另一列的替换值

问题描述 投票:0回答:1

我的数据是这样的:

Item | Process
ABC  | XYZ-ABC
AC   | XYZ-AC
AD   | XYZ-AD
AEM  | XYZ-AEM
AF   | XYZ-AF
AG   | WXY-AG
AHSG | WXY-AHSG
AI   | WXY-AI
AJ   | WXY-AJ

Process列以某个字符串开头,Item列中的值附加到该字符串。仅保留起始字符串。 Item列中的值及其长度可以变化。我想按行进行gsub(),其中模式是Item中的值,替换为”(空白),目标为Process列。

我不能只删除Process中“-”之后的所有内容,因为分隔符可以更改。我不在乎是否只要保留其余的定界符就可以了。另外,Process中起始字符串的长度可以变化。

这是我到目前为止使用data.table尝试过的内容:

myData[grep(Item, Process), gsub(Item, "", Process)]

这适用于第一行,但其余所有行保持不变。我知道这是因为gsub()只能采用单个模式,而我要提供多个模式。我正在寻找一种非常有效,快捷的方法来实现这一目标。我的数据可以有> 400万行。这将在Shiny应用程序中发生,并且我不想让用户在这种情况下等待。请帮助!

r string replace gsub
1个回答
0
投票
stringr::str_replace(df$Process, df$Item, "")
© www.soinside.com 2019 - 2024. All rights reserved.