0

I am trying to create a binary variable where if an individual did not make $100 or more in all four quarters of a year they are listed as 0; if an individual did make $100 or more they are listed as 1. Below is an example of the desired output that I am trying to make. I have created the Binary column, I just need Binary2

dd <- read.table(text="
MPI     yrqtr  Wage Binary Binary2
PersonA 20101  100    1      1
PersonA 20102  100    1      1
PersonA 20103  100    1      1  
PersonA 20104  100    1      1
PersonA 20111  100    1      0
PersonA 20112  100    1      0
PersonA 20113  100    1      0
PersonA 20114   50    0      0", header=T)

2 Answers 2

1

Here we can group by year and person, and then use all() to look across all records for a year. I use +0 to turn the boolean value into 1/0.

dd %>% 
  group_by(MPI, year=substr(yrqtr,1,4)) %>% 
  mutate(Binary2 = all(Wage>=100)+0)
Sign up to request clarification or add additional context in comments.

Comments

0

Here is similar approach:

dd %>%
  group_by(group = str_extract(yrqtr, '\\d{4}')) %>% 
  mutate(Binary = ifelse(Wage >= 100, 1, 0),
         Binary2 = ifelse(sum(Binary)==4, 1, 0)) %>% 
  ungroup() %>% 
  select(-group)
 MPI     yrqtr  Wage Binary Binary2
  <chr>   <int> <int>  <dbl>   <dbl>
1 PersonA 20101   100      1       1
2 PersonA 20102   100      1       1
3 PersonA 20103   100      1       1
4 PersonA 20104   100      1       1
5 PersonA 20111   100      1       0
6 PersonA 20112   100      1       0
7 PersonA 20113   100      1       0
8 PersonA 20114    50      0       0

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.