В порядке строки мы можем использовать rowSums
после преобразования подмножества набора данных в логический
library(tidyverse)
df1 %>%
mutate(Count = rowSums(.[-1] > 0))
Или используя reduce
df1 %>%
mutate(Count = select(., -1) %>%
mutate_all(funs(. > 0)) %>%
reduce(`+`))
Или с pmap
df1 %>%
mutate(Count = pmap_dbl(.[-1], ~ sum(c(...) > 0)))
# Item 2018 2019 2020 2021 2022 2023 Count
#1 Apples 10 12 17 18 0 0 4
#2 Bears 40 50 60 70 80 90 6
#3 Cats 5 2 1 0 0 0 3
#4 Dogs 15 17 18 15 11 0 5
данные
df1 <- structure(list(Item = c("Apples", "Bears", "Cats", "Dogs"), `2018` = c(10L,
40L, 5L, 15L), `2019` = c(12L, 50L, 2L, 17L), `2020` = c(17L,
60L, 1L, 18L), `2021` = c(18L, 70L, 0L, 15L), `2022` = c(0L,
80L, 0L, 11L), `2023` = c(0L, 90L, 0L, 0L)), class = "data.frame",
row.names = c(NA, -4L))