Walking through what’s left of the heart of the Jungle. The camp ‘Main St’ pic.twitter.com/8tYau41NST
— Gavin Lee (@GavinLeeBBC) October 26, 2016
With the Calais Jungle being broken up and most of the migrants there sent elsewhere in France, it seems a good time to return to the topic of asylum (although there is a difference between asylum and migration).
I say return because I’ve written about asylum before – more specifically how certain towns and cities, mainly in the North of England, Wales and Scotland – take a greater share than other parts of the country.
Much of the row about Calais centres on the age of the people there, especially those coming to Britain. In England, a child is anyone under the age of 18. If children arrive here to claim asylum unaccompanied, they are classed as ‘unaccompanied asylum-seeking children’ and local authorities (councils) have a duty to look after them.
The Home Office has had a deliberate policy for some time now of dispersing asylum seekers away from London and the South East while their applications are considered – something which has rankled with some of the areas like Liverpool tasked with housing them (although a previous Home Office minister said the department had voluntary arrangements with 95 councils for housing asylum seekers).
But the data on unaccompanied asylum-seeking children (UASC) shows different – many of them are staying around the capital.
In this post we’re going to get both datasets and show the disparity between where child and adult asylum seekers go in England.
Let’s take a look at the data:
Both datasets are quite patchy at local authority level. Because it’s personal data, small numbers are anonymised, leading to a confusing picture if you analyse it that closely.
It helps to step back to regional level, which is what we’ll do here.
Here are the asylum and the UASC datasets, cleaned up by me to an extent.
The data goes back to 2003, but we’ll focus on the latest quarter for now.
data <- read.csv("section_95.csv") str(data) #isolate latest quarter latest <- grep("2016 Q2", data$Quarter) latest <- data[latest, ]
Now it’s time to introduce a new function
(Remember for the list of all useful formulas, check the cheat sheet).
Calling head on our data reveals that there is an asterisk (*) in front of each region, plus the word ‘Total’.
> head(latest) Quarter Region Local.Authority Total.supported.under.Section.95 22882 2016 Q2 *Total *Total 37030 22883 2016 Q2 East Midlands *Total East Midlands 2727 22884 2016 Q2 East of England *Total East of England 576 22885 2016 Q2 London *Total London 3470 22886 2016 Q2 North East *Total North East 3235 22887 2016 Q2 North West *Total North West 9015 In.receipt.of.subsistence..only Dispersed Disbenefited 22882 2663 34367 : 22883 135 2592 : 22884 143 433 : 22885 1386 2084 : 22886 35 3200 : 22887 329 8686 :
That isn’t going to be helpful for when we merge the data later.
The gsub function can do a find and replace on your data
The basic syntax for gsub is as follows:
gsub([to_find],[to_replace],[data])
Here is a basic example, replacing the ‘a’s in the Local Authority column with the ‘@’ symbol:
> latest$Local.Authority <- gsub("a","@",latest$Local.Authority) > head(latest) Quarter Region Local.Authority Total.supported.under.Section.95 1 2016 Q2 *Total *Tot@l 37030 2 2016 Q2 East Midlands *Tot@l E@st Midl@nds 2727 3 2016 Q2 East of England *Tot@l E@st of Engl@nd 576 4 2016 Q2 London *Tot@l London 3470 5 2016 Q2 North East *Tot@l North E@st 3235 6 2016 Q2 North West *Tot@l North West 9015 In.receipt.of.subsistence..only Dispersed Disbenefited 1 2,663 34,367 : 2 135 2,592 : 3 143 433 : 4 1,386 2,084 : 5 35 3,200 : 6 329 8,686 :
Our case is a bit more complicated because the asterisk is a special character for regex. We’ll need to use two backspaces (\\) to make it clear that we intend to filter using the asterisk itself. We will replace it with a blank (“”).
Note the whitespace after ‘Total’, we want that gone as well:
#replace *Total > latest$Local.Authority <- gsub("\\*Total ", "",latest$Local.Authority) > head(latest) Quarter Region Local.Authority Total.supported.under.Section.95 In.receipt.of.subsistence..only 22882 2016 Q2 *Total *Total 37030 2663 22883 2016 Q2 East Midlands East Midlands 2727 135 22884 2016 Q2 East of England East of England 576 143 22885 2016 Q2 London London 3470 1386 22886 2016 Q2 North East North East 3235 35 22887 2016 Q2 North West North West 9015 329 Dispersed Disbenefited 22882 34367 : 22883 2592 : 22884 433 : 22885 2084 : 22886 3200 : 22887 8686 :
You can see now we have our cleaned region names.
There is still an asterisk in front of Total because it didn’t precisely match our gsub expression. That’s OK though, we don’t need it.
Let’s bring in our UASC data:
> uasc <- read.csv("UASC.csv") > uasc Area UASC 1 London 1440 2 South East 1350 3 East of England 450 4 West Midlands 370 5 East Midlands 280 6 Yorkshire and The Humber 110 7 North West 100 8 South West 80 9 North East 20
And now let’s merge them together.
(This previous post has a fuller introduction to merge).
merged <- merge(uasc, latest, by.x = "Area", by.y = "Local.Authority") > str(merged) 'data.frame': 9 obs. of 8 variables: $ Area : Factor w/ 9 levels "East Midlands",..: 1 2 3 4 5 6 7 8 9 $ UASC : int 280 450 1440 20 100 1350 80 370 110 $ Quarter : Factor w/ 1 level "2016 Q2": 1 1 1 1 1 1 1 1 1 $ Region : Factor w/ 14 levels "*Total","East Midlands",..: 2 3 4 5 6 10 11 13 14 $ Total.supported.under.Section.95: Factor w/ 121 levels "0","1","10","1049",..: 44 86 61 56 114 80 118 79 73 $ In.receipt.of.subsistence..only : Factor w/ 60 levels "0","1","1,386",..: 10 11 3 37 34 16 43 22 6 $ Dispersed : Factor w/ 109 levels "0","1","1,039",..: 29 64 28 44 92 53 102 61 60 $ Disbenefited : Factor w/ 2 levels ":","z": 1 1 1 1 1 1 1 1 1
Now we need the data for both kinds of asylum seeker in one column
Currently they are in two columns, which is no good for the grouped bar chart we have in mind.
We are going to focus on those asylum seekers and their families housed in accommodation while their claims are processed, i.e. the ‘Dispersed’ column. The data also contains cases of families whose claims were rejected but are supported anyway because they have children. This is something the Home Office wanted to change as of last year because the total cost of supporting these people, not just with accommodation, came to £73m in 2014/15.
Luckily, as before, we can use gather to get both columns of data into one.
library(tidyr) new_data <- gather(merged, type, value, UASC, Dispersed) #make the values numeric new_data$value <- as.numeric(new_data$value)
Here we are saying: ‘Create a new data frame. This will be the same as merged, except with two new columns. One column called “type” will show whether the number refers to children or adults/families in dispersed accommodation. The other called ‘value’ will be the numbers.
Now we have our data in the correct format!
#create labels labelss <- c("E. Mids","East","London","NE", "NW","SE","SW","W. Mids","Yorkshire & H.") ggplot(new_data, aes(x = Area, y = value, fill = type)) + ggtitle("Asylum in England") + labs(x = "Region", y = "Total") + scale_x_discrete(labels = labelss) + geom_bar(stat="identity", position = "dodge") + theme(plot.title = element_text(size = 75), axis.text.y = element_text(size = 24), axis.text.x = element_text(size = 20), axis.title = element_text(size = 38), legend.title = element_text(size = 28), legend.text = element_text(size = 20), legend.position = "right", #space out the legend keys legend.key.size = unit(1.5, 'lines')) + scale_fill_discrete(name ="Region")
Note here: we are using fill = type to create bars based on what type of asylum seeker they are and position = “dodge” to make the bars appear next to each other.
The graph shows the huge differences in where adults and their families are housed compared to unaccompanied minors.
Adults and families in section 95 support are put away from London and the South East.
The Home Office put the dispersal policy away from London in place because asylum seekers were choosing to stay in or near the capital while their claims were processed and putting pressure on services there. It’s worth noting that the centre for processing claims is in Croydon, south London.
According to Coram Children’s Legal Centre, unaccompanied asylum-seeking children are often processed at the centre in Croydon and then allocated care elsewhere in London.
A curious result of these policies is that there were more unaccompanied asylum-seeking children in the East of England and the South East than there were adults and families, despite the fact there are many more asylum seekers supported under section 95 in housing than there are UASC.