Как перекодировать несколько значений для конкретной строки Tidyverse - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы найти способ изменить значения в нескольких столбцах для конкретной строки, используя tidyverse. Например, с base R и набором данных iris:

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 голосов
/ 19 января 2019

Возможно, это сработает, это не самое элегантное, но у меня сработало:

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))))
...