如何重新编码特定行tidyverse的几个值

时间:2019-01-08 15:21:11

标签: tidyverse recode

我想找到一种使用tidyverse来更改特定行的几列中的值的方法。 例如,使用base Riris数据集:

iris[iris$Sepal.Length == 5.1, c("Petal.Length",
                                 "Petal.Width")] <- c(1.5,
                                                      0.5)

到目前为止,我是通过tidyverse找到的,但是如何仅更改Sepal.Length == 5.1所在的行的这些值?我知道我可以filter进行所需的行,然后更改值,但是如果我想像上面的base示例那样保留整个数据集怎么办?:

myiris <- iris %>% 
 mutate_at(c("Petal.Length","Petal.Width"),
 funs(recode(., "1.4" = 1.5, "0.2" = 0.5)))

谢谢!

1 个答案:

答案 0 :(得分:0)

也许这行得通,不是最优雅,但对我有用:

library(tidyverse)

myiris <- iris %>% 
  mutate_at(c("Petal.Length","Petal.Width"),
      funs(ifelse(Sepal.Length == 5.1, c(1.5, 0.5), c(Sepal.Length, Sepal.Width))))