【发布时间】:2019-12-06 07:46:25
【问题描述】:
我的数据是这样的:
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 应用程序中发生,我不想让用户在发生这种情况时等待。请帮忙!
【问题讨论】: