r - 替换一个数据集在另一个数据集中的出现
问题描述
我有一个名为 Messages 的数据集,其中包含 C# 错误。我有一个名为 Usernames 的第二个数据集,其中包含用户名列表。我想从消息中删除任何用户名的出现。任何消息都不应出现超过 1 次用户名。我以为我可以用 gsubfn 做到这一点,但它输出所有 NULL。有人可以告诉我最好的方法吗?
usrNm <- c(dataset2$username)
stripUsername <- function(x) {gsubfn(usrNm,'',x)}
noUsernames <- within(dataset,{Message=stripUsername(dataset$Message)})
+----------------------------------+----------------------------------+ +--------------+
| Message | Expected output | | Username |
+----------------------------------+----------------------------------+ +--------------+
| User: Mary.Jane sent bad data | User: sent bad data | | Mary.Jane |
+----------------------------------+----------------------------------+ +--------------+
| Error occurred in System.Module. | Error occurred in System.Module. | | Robert.Frost |
+----------------------------------+----------------------------------+ +--------------+
| Hello, world! | Hello, world! | | BB.Wolf |
+----------------------------------+----------------------------------+ +--------------+
| Tracing request by Robert.Frost! | Tracing request by ! |
+----------------------------------+----------------------------------+
解决方案
这是一种方法:
library(stringi)
stri_replace_all_fixed(dataset$Message, dataset2$Username, '', vectorize_all = FALSE)
输出
[1] "User: sent bad data" "Error occurred in System.Module."
[3] "Hello, world!" "Tracing request by !"
数据
dataset <- data.frame(
Message = c("User: Mary.Jane sent bad data", "Error occurred in System.Module.", "Hello, world!", "Tracing request by Robert.Frost!"),
stringsAsFactors = FALSE
)
dataset2 <- data.frame(
Username = c("Mary.Jane", "Robert.Frost", "BB.Wolf")
)
推荐阅读
- c - c 进程间通信编译
- python - 如何遍历excel中的每个单元格以检查单元格是否包含日期,然后将日期转换为字符串
- c# - 将物理电话上的 Xamarin.forms 应用程序连接到 Asp.net REST API 时出现 StatusCode 400“错误请求”
- c++ - 类成员的动态分配和值
- excel - Excel 2013 中未定义 Eval
- pointers - 为什么我必须在取消引用之前复制字符串?
- python - 在 qTimeEdit 中找不到 valueChanged
- c# - C# UWP 显示图像
- reactjs - 反应JS。如何在创建的侦听器中删除事件侦听器?
- python - 在 Python 中将 CSV 转换为 XLSX 格式时,“'utf-8' 编解码器无法解码位置 0 中的字节 0xff:无效的起始字节”