44# and inst partners
55
66# nolint start
7-
87source(here :: here(" data" , " nsfg_scripts" , " egodata_functions.R" ))
98
109w <- readRDS(here :: here(" data" , " nsfg_wide.rds" ))
@@ -20,11 +19,11 @@ ego_vars <- c(
2019 " p_cond_month" , " condom_use" , " condom_use2"
2120)
2221
23- egos <- w | > select(all_of(ego_vars ))
22+ egos <- w | > dplyr :: select(dplyr :: all_of(ego_vars ))
2423
2524# define alter variables in wide data
2625alter_vars <- c(
27- " ego" , " weight" , " race" , " age_group" , " age" , " female" , # ego chars
26+ " ego" , " weight" , " race" , " age_group" , " age" , " female" , " secu " , " sest " , # ego chars
2827 " once1" , " rel1" , " page1" , " curr1" , " partdur1" , " prace1" ,
2928 " once2" , " rel2" , " page2" , " curr2" , " partdur2" , " prace2" ,
3029 " once3" , " rel3" , " page3" , " curr3" , " partdur3" , " prace3"
@@ -83,8 +82,17 @@ a3$alter_age[agemiss] <- predict(partner_age_glm, newdata = testdat, type = "res
8382
8483a4 <- a3 | >
8584 dplyr :: mutate(alter_age = ifelse(alter_age == 50 , 49.9 , alter_age )) | >
86- dplyr :: mutate(alter_age = ifelse(alter_age > 50 , NA , alter_age )) | >
8785 dplyr :: mutate(alter_age = ifelse(alter_age < 15 , 15 , alter_age )) | >
86+ dplyr :: mutate(olderpartner = ifelse(alter_age > 50 , 1 , 0 )) | >
87+ dplyr :: mutate(alter_age_group = dplyr :: case_when(
88+ alter_age < 20 ~ 1 ,
89+ alter_age > = 20 & alter_age < 25 ~ 2 ,
90+ alter_age > = 25 & alter_age < 30 ~ 3 ,
91+ alter_age > = 30 & alter_age < 35 ~ 4 ,
92+ alter_age > = 35 & alter_age < 40 ~ 5 ,
93+ alter_age > = 40 & alter_age < 45 ~ 6 ,
94+ alter_age > = 45 ~ 7
95+ )) | >
8896 dplyr :: mutate( # race cat
8997 alter_race = ifelse(alter_race == 1 , " H" ,
9098 ifelse(alter_race == 2 , " W" ,
@@ -95,7 +103,7 @@ a4 <- a3 |>
95103 )
96104 )
97105
98- a4 $ alter_age_group <- cut(round( a4 $ alter_age ), 7 )
106+ dat_oldpartners <- a4 | > dplyr :: filter( olderpartner == 1 )
99107
100108a5 <- a4 | >
101109 dplyr :: mutate(
@@ -117,10 +125,21 @@ a5 <- a4 |>
117125
118126
119127# finally, remove any remaining rows with NA reponses in key variables
128+ # and remove any row with alter_age > 50
120129a6 <- a5 | >
121- dplyr :: filter(! is.na(alter_age ), ! is.na(rel2 ), ! is.na(alter_race ))
130+ dplyr :: filter(! is.na(alter_age ), ! is.na(rel2 ), ! is.na(alter_race ), alter_age < 50 )
122131
123132# save out
124133saveRDS(a6 , here :: here(" data" , " nsfg_long.rds" ))
125134
135+ # correct degree terms in wide data based on older partners, add older partner flag
136+ egos_main_olderpartner <- dat_oldpartners $ ego [dat_oldpartners $ rel2 == " Marriage/Cohab" ]
137+ egos_cas_olderpartner <- dat_oldpartners $ ego [dat_oldpartners $ rel2 == " Casual/Other" ]
138+
139+ w $ deg_main [w $ ego %in% egos_main_olderpartner ] <- 0
140+ w $ deg_casual [w $ ego %in% egos_cas_olderpartner ] <- 0
141+ w $ olderpartner <- 0
142+ w $ olderpartner [w $ ego %in% egos_main_olderpartner ] <- 1 # we really only care about mains bc casual parts are short
143+
144+ saveRDS(w , here :: here(" data" , " nsfg_wide.rds" ))
126145# nolint end
0 commit comments