【发布时间】:2018-08-14 09:21:05
【问题描述】:
我有如下数据框,如下所示。
Funct.Area Environment ServiceType Ticket.Nature SLA.Result..4P. IRIS.Priority Func_Environment
2 FUN DCF FUN SR OK Medium FUN-DCF
3 AME - FIN DCF FUN SR Defect Medium AME - FIN-DCF
4 EMEA -FIN DCF FUN SR OK Medium EMEA -FIN-DCF
5 APS DCF APS SR Defect Medium APS-DCF
6 EMEA -SC DCF FUN SR OK Medium EMEA -SC-DCF
7 SEC DCF SEC SR OK Low SEC-DCF
我需要从字段 Funct.Area 中提取一个子集,以便获得前 3 或 4 个字符,如果它们是“EMEA”或“AME”,则将该字段中的值替换为 Environment 上的值.
我在 StackOverflow 中研究过类似的问题,但我无法管理复制部分,因为我遇到了一个因素问题。
如果我应该尝试任何方法,有人可以指导我吗?
谢谢。
编辑#1: 根据@akrun 方法。
tickets$Funct.Area <- as.character(tickets$Funct.Area)
i1 <- with(tickets, grepl("^(EMEA|AME)", tickets$Funct.Area))
tickets$Funct.Area[i1] <- tickets$Func_Environment[i1]
head(tickets)
Funct.Area Environment ServiceType Ticket.Nature SLA.Result..4P. IRIS.Priority Func_Environment
2 FUN DCF FUN SR OK Medium FUN-DCF
3 13 DCF FUN SR Defect Medium AME - FIN-DCF
4 65 DCF FUN SR OK Medium EMEA -FIN-DCF
5 APS DCF APS SR Defect Medium APS-DCF
6 66 DCF FUN SR OK Medium EMEA -SC-DCF
7 SEC DCF SEC SR OK Low SEC-DCF
编辑 2:
这是对我有用的解决方案。
tickets$Funct.Area <- as.character(tickets$Funct.Area)
tickets$Environment <- as.character(tickets$Environment)
i1 <- with(tickets, grepl("^(EMEA|AME)", tickets$Funct.Area))
tickets$Funct.Area[i1] <- tickets$Func_Environment[i1]
tickets$Funct.Area[i1] <- as.character(tickets$Environment[i1])
非常感谢@akrun。
【问题讨论】:
-
试试
i1 <- with(df1, grepl("^(EMEA|AME)", Funct.Area); df1$Funct.Area[i1] <- df1$Func_Environment[i1] -
知道了!太感谢了!我将使用适合我的正确解决方案编辑帖子。
标签: r data-science data-cleaning