У меня есть набор данных, в котором я хочу подсчитать количество раз значение (больше 0) присутствует в диапазоне столбцов, представленных в x_times .
Пример:
. x1 x2 x3 x4 x_times
1 NA 0 0 0 0
2 0 NA 0 0 0
3 0 0 NA 1 1
4 1 0 1 NA 2
5 NA 0 0 0 0
6 0 NA 0 0 0
7 0 0 NA 0 0
8 1 2 4 NA 3
9 NA 0 0 0 0
10 0 NA 1 5 2
11 0 0 NA 0 0
12 0 1 0 NA 1
Я возился с инструкциями ifelse, но с 4 столбцами это немного излишне.Я мог бы, но должен быть более легкий путь.
count <- 0
with(df5, ifelse(df$x1 > 0, count+1, ifelse(df$x1 == 0 , count+0 ,
ifelse(df$x2 > 0, count+1, ifelse(df$x2 == 0, count+0,
ifelse(df$x3 > 0, count+1, ifelse(df$x3 == 0, count+0,
ifelse(df$x4 > 0, count+1, ifelse(df$x4 == 0, count+0, 0
)))))))))
Дополнительный вопрос, могу ли я сделать +1 в ifelse заявлениях, подобных этому?Эти строки кода ifelse не работают, он изменяет значения, а не добавляет их.
Я попытался поработать с этим: apply(cbind(df$x1, df$x2, df$x3,df$x4), 1, function(x) ifelse(all(is.na(x)), NA, nrow(x, na.rm=T)))
, но безрезультатно.
dplyr::count()
возвращает ошибкио целых числах
rowSums
складывает значения, я просто хочу +1, когда x > 0
.
Я чувствую, что это простой вопрос, но я не могу понять этов сжатой форме.Ответы с циклом приветствуются для больших наборов данных, но это не обязательно должна быть функция / цикл как таковая.