r найдите строку с фильтром, затем замените значение отдельной ячейки

#r #filter #dplyr

#r #Фильтр #dplyr

Вопрос:

У меня есть данные в следующем формате:

         col1   col2  col3  col4
row1     xx    100    ABC
row2     xx    10     ABC
row3     xx    100    BYZ
  

И нужно найти определенное значение по нескольким условиям и умножить его. Я хочу взять значение 10 в col2 и row2 и умножить его на 100.

Фрейм данных слишком большой и будет меняться при каждом обновлении, поэтому проблемное значение должно быть найдено путем поиска условий.

Код, который я использовал для поиска желаемого значения, является:

 dplyr::filter(data, col3 == 'ABC' amp; col1 == 'xx')[2]
  

Но попытка переназначить это следующим образом:

 dplyr::filter(data, col3 == 'ABC' amp; col1 == 'xx)[2]
<- dplyr::filter(data, col3 == 'ABC' amp; col1 == 'xx')[2]
 * 100
  

Встречается новая ошибка, что filter()<- не является подмножеством функции dplyr.

Я попытался вернуться к более ранней версии dplyr без улучшения.

Ответ №1:

Вы можете использовать simple ifelse для изменения значений в col2 для конкретных условий.

 library(dplyr)
data %>% mutate(col2 = ifelse(col3 == 'ABC' amp; col1 == 'xx', col2 * 100, col2))
  

Или сохраните его в базе :

 transform(df, col2 = ifelse(col3 == 'ABC' amp; col1 == 'xx', col2 * 100, col2))
  

Также не filter<- определена функция, поэтому вы не можете использовать ее напрямую.