Anna
Anna

Reputation: 71

In R, how do I generate a dummy based on multiple conditions within a panel?

I have a panel df containing employment records for each worker (PersonID).

I want to generate a dummy variable, Enroll_Post_Disp that indicates if a worker enrolled in school after a lay-off OR they participated in a federal retraining program (WFTFLAG==1).

Specifically, I want Enroll_Post_Disp to capture enrollment in school or a retaining program starting 2 quarters before the layoff and any time after a lay-off. I've generated a variable (Time_Diff_Layoff_Enroll_Quarters) that indicates the time difference between each worker's lay-off (i.e., PermSeparation==1) and enrollment in a school, and I want to use this to generate the Enroll_Post_Disp dummy. Note, the Time_Diff_Layoff_Enroll_Quarters variable only applies to workers who enrolled in a school, not for the workers participating in a federal retraining program.

As I see it, the coding criteria for Enroll_Post_Disp is:

Enroll_Post_Disp == 1 if

OR Enroll_Post_Disp == 1 if

I've tried the code below, but I'm getting a "no applicable method for 'slice' applied to an object of class "c('integer', 'numeric')" error.

    toy_emp %>%
      group_by(PersonID) %>% 
      mutate(Enroll_Post_Disp = case_when(Time_Diff_Layoff_Enroll_Quarters > -3 & Time_Diff_Layoff_Enroll_Quarters < 60 | WFTFLAG==1 & slice(which(PermSeparation == 1)) ~ 1, TRUE ~ 0)) 

Here are the first 500 rows of the df:

    structure(list(PersonID = c(185, 185, 185, 185, 185, 185, 185, 
185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 278, 278, 278, 
278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 
278, 278, 278, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 
1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1534, 
1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 
1534, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 
3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3234, 3234, 3234, 
3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 
3234, 3234, 3234, 3234, 3234, 3345, 3345, 3345, 3345, 3345, 3345, 
3345, 3345, 3345, 3345, 3345, 3345, 3486, 3486, 3486, 3486, 3486, 
3486, 3486, 3486, 3486, 3486, 3486, 3486, 3486, 3486, 3486, 3486, 
3486, 3486, 3486, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 
3743, 3743, 3743, 3743, 3743, 4166, 4166, 4166, 4166, 4166, 4166, 
4166, 4166, 4166, 4166, 4166, 4166, 4166, 4889, 4889, 4889, 4889, 
4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 
4889, 4889, 4889, 4889, 4910, 4910, 4910, 4910, 4910, 4910, 4910, 
4910, 4910, 4910, 4910, 4910, 4910, 4910, 4910, 4910, 4910, 4910, 
5062, 5062, 5062, 5062, 5062, 5062, 5062, 5062, 5062, 5062, 5062, 
5062, 5062, 5062, 5062, 5062, 5062, 5062, 5062, 5209, 5209, 5209, 
5209, 5209, 5209, 5209, 5209, 5209, 5209, 5209, 5209, 5209, 5209, 
6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6477, 6477, 
6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 
6477, 6477, 6477, 7255, 7255, 7255, 7255, 7255, 7255, 7255, 7255, 
7255, 7255, 7255, 7255, 7255, 7255, 7255, 7255, 7255, 7255, 7255, 
7645, 7645, 7645, 7645, 7645, 7645, 7645, 7645, 7645, 7645, 7645, 
7645, 7645, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 
8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8914, 8936, 
8936, 8936, 8936, 8936, 8936, 8936, 8936, 8936, 8936, 8936, 8936, 
8936, 8936, 8936, 8936, 8936, 8936, 8936, 9902, 9902, 9902, 9902, 
9902, 9902, 9902, 9902, 9902, 9902, 9902, 9902, 9902, 9902, 9902, 
9902, 9902, 9902, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 
10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 
10905, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 
11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 
11498, 11498, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 
11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 
11500, 11500, 11500, 13043, 13043, 13043, 13043, 13043, 13043, 
13043, 13043, 13043, 13043, 13043, 13043, 13043, 13043, 13043, 
13043, 13043, 13043, 13043, 13606, 13606, 13606, 13606, 13606, 
13606, 13606, 13606, 13606, 13606, 13606, 13606, 13606, 13606, 
13606, 13606, 13606, 13606, 14083, 14083, 14083, 14083, 14083, 
14083, 14083, 14083, 14083, 14083, 14083, 14083, 14083, 14083, 
14083, 14083, 14083, 14083, 14083, 17188, 17188, 17188, 17188, 
17188, 17188, 17188, 17188, 17188, 17188, 17188, 17188, 17188, 
17188, 17188, 17188, 18300, 18300, 18300, 18300, 18300, 18300, 
18300, 18300, 18300, 18300, 18300, 18300, 18300, 18300, 18300, 
18300, 18300, 18300, 18300, 19202, 19202, 19202, 19202, 19202, 
19202, 19202, 19202, 19202, 19202), Year = c(2003, 2004, 2005, 
2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 
2019, 2020, 2021, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 
2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 
2015, 2016, 2017, 2018, 2019, 2020, 2021, 2003, 2010, 2011, 2012, 
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2004, 2005, 
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 
2017, 2018, 2019, 2020, 2021, 2003, 2004, 2005, 2006, 2007, 2008, 
2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 
2020, 2021, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 
2012, 2013, 2014, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 
2014, 2015, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 
2016, 2017, 2018, 2019, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 
2021, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2003, 2004, 2005, 
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 
2017, 2018, 2019, 2020, 2021, 2003, 2004, 2006, 2007, 2008, 2009, 
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2003, 2004, 2005, 
2006, 2007, 2008, 2009, 2010, 2013, 2005, 2007, 2008, 2009, 2010, 
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 
2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2003, 2004, 2005, 
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2003, 
2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 
2015, 2016, 2017, 2018, 2019, 2020, 2021, 2003, 2004, 2005, 2006, 
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 
2018, 2019, 2020, 2021, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 
2014, 2015, 2018, 2019, 2020, 2021, 2003, 2004, 2005, 2006, 2007, 
2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 
2019, 2020, 2021, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 
2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2003, 2004, 2005, 
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 
2017, 2018, 2019, 2020, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 
2021, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 
2016, 2017, 2018, 2019, 2020, 2021, 2003, 2004, 2005, 2006, 2007, 
2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 
2019, 2020, 2021, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 
2011, 2012), LayoffTimeID = structure(c(NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, 17896, NA, NA, NA, NA, NA, NA, NA, 
NA, 13969, NA, 14974, NA, NA, 15978, NA, NA, 16891, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
17621, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16891, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 15430, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 17347, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, 15705, 15795, NA, NA, NA, NA, NA, NA, NA, 14334, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, 14244, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, 16525, NA, NA, 17621, NA, NA, NA, NA, NA, NA, NA, 14609, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 15064, 15430, 15795, 16160, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16435, 16800, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 15613, 
15978, 16343, 16708, NA, NA, NA, NA, NA, NA, NA, NA, 14334, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, 16070, NA, NA, NA, 17439, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 14699, 15064, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 14060, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, 16160, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 13969, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 17621, NA, NA, NA, 
NA, NA, NA, NA, 13878, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 17074, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 17712, NA, NA, NA, NA, NA, NA, NA, NA, 14244, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 17712, NA, NA, 
NA, NA, NA, NA, 13878, 14244, 14609, NA, NA, 15705, 16070, 16435, 
NA, NA, 17531, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 15430, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 14152, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 14882, NA, 15430), class = "Date"), Time_To_Layoff = c(-13, 
-12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 
-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, 
-1, 0, 1, 2, 3, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 
-9, -8, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
-14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 
0, 1, 2, 3, 4, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 3, -6, 
-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-5, -4, -3, -2, -1, 0, 2, 3, 4, 5, 6, 7, 8, -8, -7, -6, -5, -4, 
-3, -2, -1, 0, 1, 2, 3, 4, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 
4, 5, 6, 7, 8, 9, 10, 11, 12, -11, -10, -9, -8, -7, -6, -5, -4, 
-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -12, -11, -10, -9, -8, -7, -6, 
-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -11, -10, -9, -8, -7, 
-6, -5, -4, -3, -2, -1, 0, 1, 2, -6, -5, -4, -3, -2, -1, 0, 1, 
2, -17, -16, -15, -9, -8, -7, -6, -5, -3, -2, -1, 0, 1, 2, 3, 
4, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
10, 11, -6, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, -11, -10, 
-9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, -5, 
-4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
-15, -14, -13, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 
0, 1, 2, 3, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
11, 12, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, 
-3, 0, 1, 2, 3, 4, 5, -15, -14, -13, -12, -11, -10, -9, -8, -7, 
-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, -5, -4, -3, -2, -1, 0, 1, 
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -15, -14, -13, -12, -11, 
-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, -11, -10, -9, 
-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 6, 8, 9, 10, -6, 
-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -5, -4, -3, 
-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -9, -8, 
-7, -6, -5, -4, -3, -2, -1, 0), Time_Diff_Layoff_Enroll_Quarters = c(NA, 
-56.054794520548, -52.054794520548, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, -29.0301369863014, -25.0301369863014, 
-21.0301369863014, NA, -13.0191780821918, NA, NA, NA, NA, NA, 
NA, NA, 17.5890410958904, 19.1232876712329, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, -37.041095890411, -33.0301369863014, -29.0301369863014, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, -21.0301369863014, -17.0191780821918, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
-33.0301369863014, -29.0301369863014, NA, NA, NA, NA, NA, -5.0082191780822, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, -35.0356164383562, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, -18.027397260274, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, -53.0410958904108, -49.0410958904108, NA, -37.0301369863014, 
-33.0301369863014, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -56.0657534246576, 
-52.054794520548, -48.054794520548, -44.054794520548, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, -5.43561643835616, -3.9013698630137, 
0.0876712328767124, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 2.99178082191781), PermSeparation = c(0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), WFTFLAG = c(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, 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, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 1, 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), Enroll_Post_Disp = c(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, 1, 1, 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, 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, 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, 1, 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, 1)), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -500L), groups = structure(list(
    PersonID = c(185, 278, 1360, 1534, 3136, 3234, 3345, 3486, 
    3743, 4166, 4889, 4910, 5062, 5209, 6306, 6477, 7255, 7645, 
    8914, 8936, 9902, 10905, 11498, 11500, 13043, 13606, 14083, 
    17188, 18300, 19202), .rows = structure(list(1:17, 18:36, 
        37:54, 55:67, 68:85, 86:104, 105:116, 117:135, 136:148, 
        149:161, 162:180, 181:198, 199:217, 218:231, 232:240, 
        241:256, 257:275, 276:288, 289:307, 308:326, 327:344, 
        345:361, 362:380, 381:399, 400:418, 419:436, 437:455, 
        456:471, 472:490, 491:500), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -30L), .drop = TRUE))

Upvotes: 0

Views: 46

Answers (1)

Michael Dewar
Michael Dewar

Reputation: 3293

You can use cummax to determine if PermSeparation has ever been 1. You can use lag(cummax(PermSeparation), default = 0) to determine if PermSeparation happened before the current row.

toy_emp |> 
  group_by(PersonID) |> 
  mutate(Enroll_Post_Disp = case_when(Time_Diff_Layoff_Enroll_Quarters > -3 & Time_Diff_Layoff_Enroll_Quarters < 60 ~ 1,
                                      WFTFLAG==1 & lag(cummax(PermSeparation), default = 0) == 1 ~ 1, 
                                      TRUE ~ 0))

Since you're already using case_when, you may as well break up your logical cases across lines of code.

Upvotes: 1

Related Questions