变异和重新编码的语法

Syntax of mutate an d recode

我正在努力使下面代码的语法正确。我正在尝试将名为化合物的列中的值从“i.x59.051”重命名为“丙酮”。尝试此代码不会导致复合列发生任何变化。

有什么建议吗?

 df%>%
  mutate(compound=recode(compound, "Acetone" = "i.x59.051", "Acetaldehyde"="i.x45.03"))

这是数据:

df <- structure(list(days_incubated = c(0L, 0L, 0L, 0L, 0L), compound = c("i.x59.051", "i.x45.03", "i.x59.051", 
"i.x45.03", "i.x59.051")), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

切换参数的顺序。

df %>%
   mutate(compound = recode(compound, "i.x59.051"="Acetone", "i.x45.03"="Acetaldehyde"))
# A tibble: 5 x 2
#   days_incubated compound    
#            <int> <chr>       
# 1              0 Acetone     
# 2              0 Acetaldehyde
# 3              0 Acetone     
# 4              0 Acetaldehyde
# 5              0 Acetone     

来自 ?recode,

... the argument names should be the current values to be replaced, and the argument values should be the new (replacement) values.

(强调我的)由此,“当前值”包括"i.x59.051",其替换值为"Acetone"

我们也可以传递一个命名向量

keyval <- setNames(c("Acetone", "Acetaldehyde"), c("i.x59.051", "i.x45.03"))
df %>%
     mutate(compound = recode(compound, !!! keyval))
# A tibble: 5 x 2
#   days_incubated compound    
#           <int> <chr>       
#1              0 Acetone     
#2              0 Acetaldehyde
#3              0 Acetone     
#4              0 Acetaldehyde
#5              0 Acetone