我有一列基本上看起来像以下字符串集:
v <- c("1 - IOP A", "1 - PHP B", "1 - RES C", "2 - IOP A", "2 - PHP B", "18 - IOP A", "18 - PHP A", "18 - RES D")
所有这些都是或将成为因素。我的数据集中有近 300 个。我的目标是将级别组合到仅由这些字母数字字符串的字母部分表示的类别中。从上面的示例中,所需的输出将是:
c("IOP A", "PHP B", "RES C", "PHP A", "RES D")
这是我尝试过的,但它不起作用,没有提供错误消息,没有任何变化,而且我不确定为什么或下一步该做什么/出了什么问题。我假设它与在字符串模式参数中使用循环索引有关,但我不知道如何告诉程序使用索引值。
for (i in 1:18) {
sub(pattern = "i - ", replacement = "", v)
}
如果有人向我展示最优雅甚至多种方法来完成此任务,我将不胜感激,因为这是一项非常基本的数据工程任务。我确信还有一种更快的 sapply 方法来编写此代码。
谢谢:)
最佳答案
您可以删除 "-"
之前的所有内容并获取唯一
值。
unique(sub('.*-\\s', '', v))
#[1] "IOP A" "PHP B" "RES C" "PHP A" "RES D"
或者与您的尝试类似,将 \\d
作为数字的占位符。
unique(sub('\\d+ - ', '', v))
这里不需要 sapply
或 for
循环,因为 sub
/gsub
已矢量化,因此它们可以工作直接向量。
关于r - 在 R 中循环替换字符串/因子变量/向量中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62988591/