我有以下数据框 - 称之为A
S.No Action Taken
1 Advance Booking
2 Before Launch
3 After Launch
4 Re Launch
5 Customer care management
我还有以下数据框 - 称之为B
Sl No Action Name
1 Machine Re Launch
2 New Machine Re Launch
3 New Machine Relaunch
4 New Device Launch
5 New Device After Launch
6 Customer Care Management'
7 Machine After Launch
8 New Machine After Launch
9 New Machine Relaunch
10 New Device After Launch
如何在数据集B中创建列,如下所示 -
Sl No Action Name Action Type
1 Machine Re Launch Re Launch
2 New Machine Re Launch Re Launch
3 New Machine Relaunch Re Launch
4 New Device Launch Launch
5 New Device After Launch After Launch
6 Customer Care Management' Customer Care Management
7 Machine After Launch After Launch
8 New Machine After Launch After Launch
9 New Machine Relaunch After Launch
10 New Device After Launch After Launch
我如何做到这一点。它类似于在Excel中查找。
答案 0 :(得分:0)
是否由于您的示例中的拼写错误,B数据帧将其称为“重新启动”,但A表示“重新启动”?我没有看到你如何期望它与那两个没有任何进一步信息相匹配。
假设这是一个错误,你可以做这样的事情,
std::promise<void>
这只是遍历Actions Taken列表,查看它是否在Action Name中找到文本,如果是,则将其输出为Action Type(如果没有,则将其保留为空并移至下一个字符串) 。这只能找到确切的拼写(忽略大小写),所以“重新启动”和“重新启动”不匹配。
添加新回复以反映下面的评论。
如果您希望能够处理所有版本的“重新启动”/“重新启动”等,我认为您必须制作一个包含您所期望的所有变体的查找表,其中包含相应的正确“采取行动”第二栏。
因此A数据框现在同时包含 action_text_variation 列和 action_taken ,其中 action_text_variation 包含要查找的所有文本, action_taken 具有您要用“。
”填充“action_type”的相应文本现在我们遍历A中的行数。
B$action_type <- ""
for (i in A$action_taken) {
B$action_type <- ifelse(B$action_type == "",
ifelse(grepl(i,
B$action_name,
ignore.case = TRUE),
i,
""),
B$action_type)
}
P.S。如果您发布了一个可重现的示例,那么我们可以自行运行代码并建议更改。