Я хочу закодировать новую переменную с именем df$dummy
на основе максимального значения в df$var1
для каждого df$month
, где значение будет 1
для максимального значения и 0
для любого другого значения,См. Воспроизводимый набор данных:
df<- data.frame(date= seq.Date(from = as.Date('2017-01-01'), by= 7,
length.out = 20), var1= rnorm(20, 5, 3))
df$month<- as.numeric(strftime(df$date, "%m"))
У меня проблемы с концептуализацией условий для функции.В Excel я бы просто использовал функцию maxif
и указывал свои критерии.Моя попытка ниже не работает:
df$dummy<- apply(df$var1, MARGIN = 2,
function(x) if_else(max(x) %in% df$month, 1, 0))
Возвращает эту ошибку:
Error in apply(df$var1, MARGIN = 2, function(x) if_else(max(x) %in% df$month, :
dim(X) must have a positive length
Как мне кодировать эту фиктивную переменную?Есть ли жизнеспособное решение dplyr
, использующее mutate_if
?