簡體   English   中英

如何根據R中的條件將數據從列復制到另一列?

[英]How to copy data from a column to another based on a condition in R?

我有下面的數據框,如下所示。

  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字段中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。

我們使用grepl創建一個邏輯索引('i1'),以檢查字符串開頭( ^ )處的字符是'EMEA'還是( | )“ AME”。 使用它,將“ Funct.Area”的元素替換為“ Funct_Environment”

i1 <- with(df1, grepl("^(EMEA|AME)", Funct.Area))
df1$Funct.Area[i1] <- df1$Func_Environment[i1] 
df1
#     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         DCF         FUN            SR          Defect        Medium    AME - FIN-DCF
#4 EMEA -FIN-DCF         DCF         FUN            SR              OK        Medium    EMEA -FIN-DCF
#5           APS         DCF         APS            SR          Defect        Medium         APS-DCF'
#6  EMEA -SC-DCF         DCF         FUN            SR              OK        Medium     EMEA -SC-DCF
#7           SEC         DCF         SEC            SR              OK           Low          SEC-DCF

數據

df1 <- structure(list(Funct.Area = c("FUN", "AME - FIN", "EMEA -FIN", 
"APS", "EMEA -SC", "SEC"), Environment = c("DCF", "DCF", "DCF", 
"DCF", "DCF", "DCF"), ServiceType = c("FUN", "FUN", "FUN", "APS", 
"FUN", "SEC"), Ticket.Nature = c("SR", "SR", "SR", "SR", "SR", 
"SR"), SLA.Result..4P. = c("OK", "Defect", "OK", "Defect", "OK", 
"OK"), IRIS.Priority = c("Medium", "Medium", "Medium", "Medium", 
"Medium", "Low"), Func_Environment = c("FUN-DCF", "AME - FIN-DCF", 
 "EMEA -FIN-DCF", "APS-DCF'", "EMEA -SC-DCF", "SEC-DCF")), .Names = c("Funct.Area", 
 "Environment", "ServiceType", "Ticket.Nature", "SLA.Result..4P.", 
"IRIS.Priority", "Func_Environment"), class = "data.frame", 
 row.names = c("2", 
 "3", "4", "5", "6", "7"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM