替换数据框一列中的多个字符串
Replace multiple strings in a column of a data frame
我一直在尝试使用 str_replace_all 替换 R 中数据框的一列中的多个字符串。
目前写的比较简单(下)
mydata$Final_Result <- str_replace_all(mydata$Final_Result, 'Absent', 'A')
mydata$Final_Result <- str_replace_all(mydata$Final_Result, 'Present', 'P')
我在同一列中还有其他字符串要替换。所以我正在寻找一种更优雅的方式来在一行中编写这段代码。
如果有人能就如何做到这一点提出建议,我们将不胜感激。
您可以使用 dplyr
包中的 case_when
:
mydata$Final_Result <- case_when(
mydata$Final_Result == "Absent" ~ "A",
mydata$Final_Result == "Present" ~ "P",
TRUE ~ NA
)
case_when
比 str_replace_all
有一个潜在的优势,因为它允许默认的 catch all 替换。
您可以执行以下操作,在一行中添加任意数量的模式替换对。
library(stringr)
vec <- c("Absent", "Absent", "Present", "Present", "XX", "YY", "ZZ")
str_replace_all(vec, c("Absent" = "A", "Present" = "P"))
# [1] "A" "A" "P" "P" "XX" "YY" "ZZ"
我一直在尝试使用 str_replace_all 替换 R 中数据框的一列中的多个字符串。
目前写的比较简单(下)
mydata$Final_Result <- str_replace_all(mydata$Final_Result, 'Absent', 'A')
mydata$Final_Result <- str_replace_all(mydata$Final_Result, 'Present', 'P')
我在同一列中还有其他字符串要替换。所以我正在寻找一种更优雅的方式来在一行中编写这段代码。
如果有人能就如何做到这一点提出建议,我们将不胜感激。
您可以使用 dplyr
包中的 case_when
:
mydata$Final_Result <- case_when(
mydata$Final_Result == "Absent" ~ "A",
mydata$Final_Result == "Present" ~ "P",
TRUE ~ NA
)
case_when
比 str_replace_all
有一个潜在的优势,因为它允许默认的 catch all 替换。
您可以执行以下操作,在一行中添加任意数量的模式替换对。
library(stringr)
vec <- c("Absent", "Absent", "Present", "Present", "XX", "YY", "ZZ")
str_replace_all(vec, c("Absent" = "A", "Present" = "P"))
# [1] "A" "A" "P" "P" "XX" "YY" "ZZ"