简体   繁体   中英

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)

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM