#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<-
определена функция, поэтому вы не можете использовать ее напрямую.