替换数据框一列中的多个字符串

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_whenstr_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"