9.3 Random Sample
20200317
A common task is to randomly sample rows from a dataset. The dplyr::sample_frac() function will randomly choose a specified fraction (e.g. 20%) of the rows of the dataset:
## # A tibble: 55,082 × 24
## date location min_temp max_temp rainfall evaporation sunshine
## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2017-12-07 Darwin 28.2 34.5 0 8 9.9
## 2 2015-11-23 Bendigo 11 25.4 0 NA NA
## 3 2021-10-16 Wollongong 13.2 21.9 NA NA NA
## 4 2024-01-13 Wollongong 21 26.4 0 NA NA
## 5 2020-04-15 Brisbane 16.7 27.4 0 NA 10
## 6 2020-11-26 Sale 14.1 23.7 0 NA NA
## 7 2009-01-30 Nuriootpa 22 41.9 0 14.8 12.7
## 8 2013-06-11 Williamtown 9.9 20.5 0.6 1.4 9.5
## 9 2018-12-01 Sale 9.6 26.8 0 NA NA
## 10 2012-03-10 Townsville 24.2 30.7 0 5.8 3.5
## # ℹ 55,072 more rows
## # ℹ 17 more variables: wind_gust_dir <ord>, wind_gust_speed <dbl>,
## # wind_dir_9am <ord>, wind_dir_3pm <ord>, wind_speed_9am <dbl>,
## # wind_speed_3pm <dbl>, humidity_9am <int>, humidity_3pm <int>,
## # pressure_9am <dbl>, pressure_3pm <dbl>, cloud_9am <int>, cloud_3pm <int>,
## # temp_9am <dbl>, temp_3pm <dbl>, rain_today <fct>, risk_mm <dbl>,
## # rain_tomorrow <fct>
The next time you randomly sample the dataset the resulting sample will be different:
## # A tibble: 55,082 × 24
## date location min_temp max_temp rainfall evaporation sunshine
## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2013-11-07 Tuggeranong 4.7 31.1 0 NA NA
## 2 2015-04-15 Ballarat 13.3 24.3 1.2 NA NA
## 3 2020-11-01 Darwin 25.5 36.3 0 8 12
## 4 2013-05-25 Richmond 6.2 20.7 1.6 NA NA
## 5 2011-11-22 Albury 11.9 22.7 2.6 NA NA
## 6 2023-07-08 Woomera 7.1 18.5 0 NA NA
## 7 2020-10-04 SalmonGums 4.5 15.9 0.6 NA NA
## 8 2025-01-19 Ballarat 12 33 0 NA NA
## 9 2018-06-28 Richmond 8.1 16.4 2.8 0.4 NA
## 10 2010-12-07 Adelaide 21.1 32.5 3.4 5.8 6
## # ℹ 55,072 more rows
## # ℹ 17 more variables: wind_gust_dir <ord>, wind_gust_speed <dbl>,
## # wind_dir_9am <ord>, wind_dir_3pm <ord>, wind_speed_9am <dbl>,
## # wind_speed_3pm <dbl>, humidity_9am <int>, humidity_3pm <int>,
## # pressure_9am <dbl>, pressure_3pm <dbl>, cloud_9am <int>, cloud_3pm <int>,
## # temp_9am <dbl>, temp_3pm <dbl>, rain_today <fct>, risk_mm <dbl>,
## # rain_tomorrow <fct>
To ensure the sample random sample each time use base::set.seed():
## # A tibble: 55,082 × 24
## date location min_temp max_temp rainfall evaporation sunshine
## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2026-01-11 MountGinini 7.4 17.1 0 NA NA
## 2 2013-04-08 Nuriootpa 12.6 25.3 0 8 10.2
## 3 2017-11-03 Dartmoor 3.5 15 0.8 NA NA
## 4 2018-01-11 BadgerysCreek 17.3 27 0.2 NA NA
## 5 2011-10-27 Launceston 5.1 19.1 0 NA NA
## 6 2024-01-27 Nuriootpa 5.9 23.8 0 8 NA
## 7 2021-04-11 Wollongong 15.1 19 0 NA NA
## 8 2022-01-15 Penrith 19.9 32.5 1.4 NA NA
## 9 2022-03-06 Ballarat 11 19.1 2 NA NA
## 10 2010-06-22 Dartmoor 5 14.8 0 0.6 4.8
## # ℹ 55,072 more rows
## # ℹ 17 more variables: wind_gust_dir <ord>, wind_gust_speed <dbl>,
## # wind_dir_9am <ord>, wind_dir_3pm <ord>, wind_speed_9am <dbl>,
## # wind_speed_3pm <dbl>, humidity_9am <int>, humidity_3pm <int>,
## # pressure_9am <dbl>, pressure_3pm <dbl>, cloud_9am <int>, cloud_3pm <int>,
## # temp_9am <dbl>, temp_3pm <dbl>, rain_today <fct>, risk_mm <dbl>,
## # rain_tomorrow <fct>
## # A tibble: 55,082 × 24
## date location min_temp max_temp rainfall evaporation sunshine
## <date> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2026-01-11 MountGinini 7.4 17.1 0 NA NA
## 2 2013-04-08 Nuriootpa 12.6 25.3 0 8 10.2
## 3 2017-11-03 Dartmoor 3.5 15 0.8 NA NA
## 4 2018-01-11 BadgerysCreek 17.3 27 0.2 NA NA
## 5 2011-10-27 Launceston 5.1 19.1 0 NA NA
## 6 2024-01-27 Nuriootpa 5.9 23.8 0 8 NA
## 7 2021-04-11 Wollongong 15.1 19 0 NA NA
## 8 2022-01-15 Penrith 19.9 32.5 1.4 NA NA
## 9 2022-03-06 Ballarat 11 19.1 2 NA NA
## 10 2010-06-22 Dartmoor 5 14.8 0 0.6 4.8
## # ℹ 55,072 more rows
## # ℹ 17 more variables: wind_gust_dir <ord>, wind_gust_speed <dbl>,
## # wind_dir_9am <ord>, wind_dir_3pm <ord>, wind_speed_9am <dbl>,
## # wind_speed_3pm <dbl>, humidity_9am <int>, humidity_3pm <int>,
## # pressure_9am <dbl>, pressure_3pm <dbl>, cloud_9am <int>, cloud_3pm <int>,
## # temp_9am <dbl>, temp_3pm <dbl>, rain_today <fct>, risk_mm <dbl>,
## # rain_tomorrow <fct>
If you find this curated material useful then you can consider a donation to support it's ongoing availability and give you access to the PDF version of this book. The material has been scoped up by Generative AI without permission or any kind of recompense so do consider a donation if you can afford it. Unlike Generative AI your access to this materials is freely given. Desktop Survival Guides include Data Science, GNU/Linux, and MLHub. Books available on Amazon include Data Mining with Rattle and Essentials of Data Science. Togaware has a 30 year tradition of making popular open source software which includes sold privacy preserving productivity apps, rattle, wajig, and mlhub. Hosted by Togaware, a pioneer of free and open source software since 1984. Copyright © 1995-2022 Graham.Williams@togaware.com Creative Commons Attribution-ShareAlike 4.0