lundi 18 septembre 2017

If any column in a row meets condition than mutate() column

Using dplyr, I am trying to conditionally update values in a column using ifelse and mutate. I am trying to say that, in a data frame, if any variable (column) in a row is equal to 7, then variable c should become 100, otherwise c remains the same.

df <- data.frame(a = c(1,2,3),
                 b = c(1,7,3),
                 c = c(5,2,9))

df <- df %>%  mutate(c = ifelse(any(vars(everything()) == 7), 100, c))

This gives me the error:

Error in mutate_impl(.data, dots) : 
  Evaluation error: (list) object cannot be coerced to type 'double'.

The output I'd like is:

  a b   c
1 1 1   5
2 2 7 100
3 3 3   9

Note: this is an abstract example of a larger data set with more rows and columns.

Aucun commentaire:

Enregistrer un commentaire