I am trying to work out for each row of a matrix how many columns have values greater than a specified value. I am sorry that I am asking this simple question but I wasn\'t
With dplyr
package, you can try the following two solutions.
library(dplyr)
df <- as.data.frame(data)
Options 1
df %>%
mutate(yr.above = rowSums(select(df, `1990`:`1992`) > 30))
Options 2
After dplyr 1.0.0
, you can use c_across()
with rowwise()
to make it easy to perform row-wise aggregations.
df %>%
rowwise() %>%
mutate(yr.above = sum(c_across(`1990`:`1992`) > 30)) %>%
ungroup()
Note: One of the benefits for using dplyr
is the support of tidy selections, which provide a concise dialect of R for selecting variables based on their names or properties.
Output
# # A tibble: 5 x 4
# `1990` `1991` `1992` yr.above
#
# 1 25 23 20 0
# 2 22 28 20 0
# 3 35 33 30 2
# 4 42 40 41 3
# 5 44 45 43 3