Поскольку вы упомянули в комментариях, что у вас нет отрицательных значений, мы можем просто заменить нули в нашем столбце на NA
, затем использовать pmin
и затем заменить NA
s на нули снова.Это будет работать, только если у вас нет NA
s в остальной части вашей таблицы.
Я немного расширил ваш фрейм данных:
df <- data.frame(
aa = c(0, 0, 0,0),
bb = c(0, 1, 2,0),
cc = c(2, 5, 3,0),
dd = c(0,0,0,0)
)
Теперь наш результат должен быть:c (2,1,2,0)
Используя следующий код, мы добавляем столбец только из этих значений:
df3<-df # copy the frame
df3[df3 == 0] <- NA # replace zeros by NA, replace by <0 if you want to ignore negative values too
# apply row-wise min function after removing NAs
df3<- df3%>% mutate(minover0= pmin(aa,bb,cc, na.rm = T))
df3[is.na(df3)] <- 0 # and return zeros, including the zero for the last (all-zero) row
Я не проверял это на скорость, но япредставьте, что это быстрее, чем rowwise()
в вашем вопросе.