'R--Filter Dynamically for 10 Quarters
I'd like to filter the following dataset for 10 quarters starting at Q1 2021:
structure(list(Year = c(2002, 2002, 2002, 2002, 2002, 2002, 2002,
2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002, 2002,
2002, 2002, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003,
2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003,
2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004,
2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2005, 2005,
2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005,
2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2006, 2006, 2006,
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006,
2006, 2006, 2006, 2006, 2006, 2007, 2007, 2007, 2007, 2007, 2007,
2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
2007, 2007, 2007, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008,
2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008,
2008, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009,
2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2010,
2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2011, 2011, 2011,
2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011,
2011, 2011, 2011, 2011, 2011, 2011, 2012, 2012, 2012, 2012, 2012,
2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012,
2012, 2012, 2012, 2012, 2013, 2013, 2013, 2013, 2013, 2013, 2013,
2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013,
2013, 2013, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014,
2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014,
2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015,
2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2017, 2017, 2017, 2017,
2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
2017, 2017, 2017, 2017, 2017, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
2019, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021,
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,
2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2022,
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2022, 2022, 2022, 2022, 2022, 2022, 2023, 2023, 2023, 2023, 2023,
2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023,
2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023,
2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023,
2023, 2023, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024), Quarter = c(1,
1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1,
1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1,
1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2,
2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3,
3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3,
3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3,
3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4,
4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4,
4, 4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4,
4, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 2, 2, 2), Name = c("Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_4", "Name_5", "Name_1",
"Name_2", "Name_3", "Name_4", "Name_5",
"Name_1", "Name_2", "Name_3",
"Name_4", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_5", "Name_1", "Name_2",
"Name_3", "Name_5"), Interest = c(47998744,
212537486, 64814280, 37572307, 109034562, 49556524, 216656962,
67422378, 36462961, 109164006, 51507223, 223656450, 69358647,
36788852, 108511260, 52623907, 227577079, 69263733, 35549413,
106889709, 50295319, 229185571, 67091600, 34344915, 102522629,
49971127, 225826369, 66495405, 33535801, 97460593, 50274064,
226202834, 67190263, 32864610, 96632152, 47551747, 227438418,
69107153, 33197895, 98853009, 47453558, 228391530, 69060457,
33177927, 100324962, 48794328, 230840882, 70831022, 34994359,
102252595, 52438823, 234118523, 74822023, 39033041, 107501508,
55637302, 238558134, 79151465, 41176714, 110639481, 56838457,
241091961, 82827744, 42764095, 112471888, 59896375, 249465650,
86522724, 45693800, 118124916, 64424080, 264794055, 92730606,
47813490, 126504673, 69621133, 276596719, 99449241, 53535772,
132391845, 72625569, 289197793, 104812463, 56042668, 136252107,
78624737, 310106248, 111466739, 61412122, 141782095, 84700269,
336264984, 121214593, 68733885, 148840778, 91162214, 390085351,
127134416, 74268369, 152103378, 93241404, 371995994, 129980452,
76582659, 152821426, 97429725, 397721755, 138700731, 80481391,
155849329, 103178535, 433151976, 150828708, 83984431, 161570721,
106680012, 548728287, 157751362, 85890641, 165503764, 107059280,
507568721, 161144237, 85209212, 164820263, 106560673, 525164898,
164692016, 83126116, 161238801, 110270377, 541545719, 172978580,
82493141, 178355555, 109313348, 532993455, 178379372, 82320780,
182809646, 105357214, 537594410, 177219066, 75627303, 182059782,
105367952, 535560462, 180519003, 71966173, 177554530, 99747003,
546456050, 182817902, 69973109, 177555524, 100715828, 547184844,
182940718, 69789453, 178012144, 95956574, 549336925, 173509891,
66534437, 160354331, 96190771, 543232004, 169483267, 64884308,
160881737, 95134642, 546463420, 168842248, 62749109, 161903566,
92749555, 551732301, 166355764, 60010334, 157190919, 89533742,
544960916, 160594132, 58165245, 143482598, 87158613, 545410994,
161260757, 57144888, 159214245, 87648238, 546060788, 159496467,
57265616, 164614674, 86697821, 547763698, 156585801, 56590640,
164179764, 85003197, 546144679, 150163953, 56684250, 163324519,
83624129, 550320919, 145741132, 56114920, 161319060, 84163890,
560860777, 142068134, 55822533, 161524303, 83239461, 585336903,
141165446, 54914806, 161632246, 79744782, 582252621, 132130313,
53225913, 161417403, 82403949, 590039449, 129564763, 52776014,
162661393, 81562433, 617692070, 130694750, 53956405, 166072140,
82588700, 643354560, 132674028, 55234558, 169936271, 81707450,
655269505, 132345649, 55488142, 173090418, 82045816, 677897278,
136925462, 56317096, 178501279, 83916966, 716102802, 143639461,
58760485, 185896142, 86874529, 748760759, 145622820, 61046304,
191893202, 87392290, 766689144, 142172063, 61964297, 195009870,
89140238, 798531675, 143142507, 62500892, 199339368, 92075059,
838676574, 150617311, 64686207, 206231765, 95540407, 860373206,
154030578, 66809360, 212321830, 97194055, 885988466, 156253436,
68624143, 214676929, 96694854, 904886941, 160716741, 69409108,
217874049, 102181929, 944422431, 166327020, 71992965, 224043376,
104722463, 970520293, 173068148, 73286680, 229298476, 107043192,
997946123, 181255627, 74891148, 233062712, 112248704, 1027741773,
193133252, 78176911, 238941791, 118250258, 1085842722, 201636182,
82731718, 248285391, 122401490, 1127438539, 202227834, 85984563,
253962329, 126410678, 1156040869, 208064951, 88510665, 258676271,
131236379, 1195206293, 214386947, 92425388, 264956579, 133919705,
1270131528, 224782680, 99110667, 273186639, 145402910, 1317693906,
230569868, 104595945, 279817998, 148602044, 1358739813, 232185680,
107810710, 286191496, 153122947, 1399286409, 234690849, 111956925,
293194461, 159946667, 1454752604, 239544457, 116886300, 301794643,
159270183, 1476517177, 243117648, 120249984, 305060190, 158312179,
1497511830, 250034915, 142187491, 305642292, 146456219, 1465748312,
239411402, 134415282, 292374098, 139703152, 1443930398, 237160902,
130707028, 300831349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134551883,
1357118303, 240093771, 127742162, 299126264, 125634812, 1422191515,
230671670, 121656245, 293007695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0)), row.names = c(NA, -533L), class = c("tbl_df", "tbl",
"data.frame"))
Solution 1:[1]
Three ways come to mind.
Simply
filter.library(dplyr) filtered_data <- filter(zz, Year %in% 2021:2022 | (Year == 2023 & Quarter %in% 1:2))Demonstration that it limited to just 10 rows:
filtered_data <- dplyr::filter(zz, Year %in% 2021:2022 | (Year == 2023 & Quarter %in% 1:2)) count(filtered_data, Year, Quarter) # # A tibble: 10 x 3 # Year Quarter n # <dbl> <dbl> <int> # 1 2021 1 15 # 2 2021 2 10 # 3 2021 3 10 # 4 2021 4 10 # 5 2022 1 10 # 6 2022 2 10 # 7 2022 3 10 # 8 2022 4 10 # 9 2023 1 10 # 10 2023 2 10Left-join with a frame that includes just the years/quarters you want. This method works better than above if you have non-continuous filtering requirements.
I_need <- tibble(Year=c(rep(2021,4),rep(2022,4),rep(2023,2)), Quarter=c(1:4,1:4,1:2)) I_need # # A tibble: 10 x 2 # Year Quarter # <dbl> <int> # 1 2021 1 # 2 2021 2 # 3 2021 3 # 4 2021 4 # 5 2022 1 # 6 2022 2 # 7 2022 3 # 8 2022 4 # 9 2023 1 # 10 2023 2 filtered_data2 <- left_join(I_need, zz, by = c("Year", "Quarter"))Math wizardry, prone to all sorts of problems/mistakes/missed-assumptions.
filtered_data2 <- filter(zz, between(Year + (Quarter-1)/4, 2021, 2023.25))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
