Dr Glenna Nightingale 

Glenna Nightingale née Evans

Sample code (R) to create a working dataset from UKHLS survey data


# For this code to run you would need to have the UKHLS waves saved in your working folder (.tab)
#-----
#UKHLS
#-----
ukhls <- data.frame(matrix(ncol = 12)) 
names(ukhls) = c("pidp","age","sex","gor","nssec","ed",
                     "mar","ethnic","move","hid","htype","waveno")
for(i in 1:6){
wave_number = paste(letters[i],"indresp.tab",sep="_")
wave = (read.csv(wave_number,header =TRUE,fill=TRUE,sep="\t"))
age = paste(letters[i],"age_cr",sep="_")
sex = paste(letters[i],"sex",sep="_")
gor = paste(letters[i],"gor_dv",sep="_")
nssec = paste(letters[i],"jbnssec_dv",sep="_")
ed = paste(letters[i],"qfhigh",sep="_")
mar = paste(letters[i],"marstat",sep="_")
ethnic = paste(letters[i],"racel",sep="_")
move = paste(letters[i],"mvyr",sep="_")
hid = paste(letters[i],"hidp",sep="_")
htype = paste(letters[i],"hhtype_dv",sep="_")
wave_data = wave[c("pidp",age,sex,gor,nssec,ed,mar,ethnic,move,hid,htype)]
wavenumber = 18+i
wave_data$waveno = rep(wavenumber,length(wave_data[,1]))
names(wave_data) = c("pidp","age","sex","gor","nssec","ed",
                  "mar","ethnic","move","hid","htype","waveno")

ukhls = rbind(ukhls,wave_data)
}
ukhls = ukhls[-1,]
ukhls = ukhls[ukhls>0,]
ukhls$mar = as.factor(ukhls$mar)
ukhls$waveno = as.factor(ukhls$waveno)

# sample crosstabs
explore_partnerships = CrossTable(ukhls$mar,ukhls$waveno)$prop.col

# sample export to Excel .csv

# sample plot: marital status levels per UKHLS wave 
ggplot(data = ukhls)+
  geom_bar(mapping = aes(x=waveno,fill=mar),
position="dodge")



#-----------------------------​