Вот два решения, с базой R и с пакетом dplyr
.
Я буду использовать данные, отправленные Shree .
First ,base R.
Я создаю группирующую переменную grp
, а затем aggregate
на ней.
grp <- with(df, c((age %in% 1:2) + 2*(age %in% 3:4)))
aggregate(age ~ grp, df, length)
# grp age
#1 1 4
#2 2 6
Секунда a dplyr
way.
Функция case_when
используется для создания группирующей переменной.Это позволяет легко давать значимые имена группам.
library(dplyr)
df %>%
mutate(grp = case_when(
age %in% 1:2 ~ "2:3",
age %in% 3:4 ~ "3:4",
TRUE ~ NA_character_
)) %>%
group_by(grp) %>%
tally()
## A tibble: 2 x 2
# grp n
# <chr> <int>
#1 1:2 4
#2 3:4 6