yacoub q
yacoub q

Reputation: 45

How do I create a dummy variable that depends on values in multiple columns?

I am trying to create a treatment dummy for the states whose 1970 legal1820 is different from their legal1820 in 1979. So I need the proper syntax for somethihng like this treat = ifelse((legal1820 when (year == 1970)) != (legal1820 when (year == 1979)) , 1,0)

this is the data I am using

mlda <- read_dta("http://masteringmetrics.com/wp-content/uploads/2015/01/deaths.dta")


dft <- mlda %>% 
  filter(year <= 1990) %>% 
  mutate(dtype = as_factor(dtype, levels = "labels"), 
         age_cat = agegr,                            
         agegr = as_factor(agegr, levels = "labels")) 

library(tidycensus)
data("fips_codes")

fips_codes <- fips_codes %>% 
  mutate(state_code = as.numeric(state_code)) %>% 
  select(state, state_code) %>% 
  distinct()

dft <- dft %>% 
  rename(state_code = state) %>% 
  right_join(fips_codes, by = "state_code") %>% 
  select(-state_code)%>%
  group_by(state)%>%
  filter(agegr == "18-20 yrs", year <= 1983)%>%
  pivot_wider(names_from = dtype, values_from = mrate)%>%
  mutate(post = ifelse(year >= 1975 ,1,0)

these are the libraries I am using (most of them are for other parts of my code)

library(tidyverse)
library(AER)
library(stargazer)
library(haven)
library(lfe)
library(estimatr)
library(stringr) 
library(dplyr)
library(modelsummary)
library(ggplot2)
library(haven)

Upvotes: 0

Views: 55

Answers (1)

ekoam
ekoam

Reputation: 8844

Is this what you are looking for?

library(dplyr)
mlda %>% group_by(state) %>% mutate(treat = +(first(legal1820[year == 1970] != legal1820[year == 1979])))

Output

# A tibble: 24,786 x 16
# Groups:   state [51]
    year state legal1820     dtype         agegr count    pop   age legal beertaxa beerpercap winepercap spiritpercap totpercap mrate treat
   <dbl> <dbl>     <dbl> <dbl+lbl>     <dbl+lbl> <dbl>  <dbl> <dbl> <dbl>    <dbl>      <dbl>      <dbl>        <dbl>     <dbl> <dbl> <int>
 1  1970     1     0       1 [all] 1 [15-17 yrs]   224 213574  16.0     0    1.37       0.600     0.0900        0.700      1.38 105.      1
 2  1971     1     0       1 [all] 1 [15-17 yrs]   241 220026  16.0     0    1.32       0.660     0.0900        0.760      1.52 110.      1
 3  1972     1     0       1 [all] 1 [15-17 yrs]   270 224877  16.0     0    1.28       0.740     0.0900        0.780      1.61 120.      1
 4  1973     1     0       1 [all] 1 [15-17 yrs]   258 227256  16.0     0    1.20       0.790     0.100         0.790      1.69 114.      1
 5  1974     1     0       1 [all] 1 [15-17 yrs]   224 229025  16.0     0    1.08       0.830     0.160         0.810      1.80  97.8     1
 6  1975     1     0.294   1 [all] 1 [15-17 yrs]   207 229739  16.0     0    0.991      0.880     0.160         0.850      1.88  90.1     1
 7  1976     1     0.665   1 [all] 1 [15-17 yrs]   231 230696  16.0     0    0.937      0.890     0.150         0.860      1.89 100.      1
 8  1977     1     0.668   1 [all] 1 [15-17 yrs]   219 230086  16.0     0    0.880      0.990     0.130         0.840      1.96  95.2     1
 9  1978     1     0.667   1 [all] 1 [15-17 yrs]   234 229519  16.0     0    0.817      0.980     0.120         0.880      1.97 102.      1
10  1979     1     0.668   1 [all] 1 [15-17 yrs]   176 227140  16.0     0    0.734      0.980     0.120         0.840      1.94  77.5     1
# ... with 24,776 more rows

Upvotes: 1

Related Questions