library(dplyr)
stocks %>%
group_by(YEAR < 1950) %>%
summarize(mean_bonds = mean(TBONDS, na.rm = TRUE))# A tibble: 2 × 2
`YEAR < 1950` mean_bonds
<lgl> <dbl>
1 FALSE 6.23
2 TRUE 3.1
One of the strongest advantages of tidyverse summaries is their integration with grouping. Using group_by(), you can split your dataset into subgroups (such as by sex or education level) and compute summaries within each subgroup effortlessly.
For example, the mean of the bonds for the year before 1950 and after 1950 can be calculated as follows:
library(dplyr)
stocks %>%
group_by(YEAR < 1950) %>%
summarize(mean_bonds = mean(TBONDS, na.rm = TRUE))# A tibble: 2 × 2
`YEAR < 1950` mean_bonds
<lgl> <dbl>
1 FALSE 6.23
2 TRUE 3.1
Alternatively, we can make multiple summaries across decades.
stocks %>%
mutate(DECADE = YEAR - YEAR %% 10) %>%
group_by(DECADE) %>%
summarize(
mean_bonds = mean(TBONDS, na.rm = TRUE),
sd_bonds = sd(TBONDS, na.rm = TRUE),
mean_stocks = mean(SPSTOCK, na.rm = TRUE),
sd_stocks = sd(SPSTOCK, na.rm = TRUE)
)# A tibble: 10 × 5
DECADE mean_bonds sd_bonds mean_stocks sd_stocks
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1920 2.5 2.12 18 36.8
2 1930 3.78 3.60 4.3 33.8
3 1940 2.56 2.19 9.6 16.5
4 1950 1.38 3.20 21.1 19.8
5 1960 2.78 4.76 8.6 14.4
6 1970 5.7 6.40 7.7 19.0
7 1980 12.6 12.7 17.8 12.3
8 1990 7.7 10.2 18.7 14.0
9 2000 6.67 9.77 1.1 21.0
10 2010 5 8.74 13.3 11.3