When you need to explore, present, analyze, or transform your data, it often requires subdividing, aggregating, or sorting a vector or data frame by one or more variables. The R environment primarily relies on two approaches: Base R and tidyverse libraries (dplyr() & tidyr()). Although these two methods are often viewed as distinct philosophies, they are designed to complement each other(see ref. 8 below).
This lesson provides examples and techniques from Base R because learning Base R offers a wider range of capabilities for different types of data and work environments in the future.
1.1 Sorting and subsetting data
How come? Numeric? Alphabetic? increasing or decreasing order?
There are two main functions in R to order your data, sort() and order(). Let’s see an example using the file coli_genomes_renamed.csv, that we used in the lesson R3.
#load the datasetcoli_genomes <-read.csv(file ="data/coli_genomes_renamed.csv", strip.white =TRUE)#test sort() & order() in a vectororder(coli_genomes$Year)
[1] "A" "A" "A" "A" "A" "A" "A" "A" "A" "A" "B1" "B1" "B1" "C" "C"
[16] "C" "C" "C" "D" "D" "D" "D"
As you noticed, the R function order() returns a permutation of the order of the elements of a vector. The output is an index vector, not the vector itself. Also note that if the vector contains any NA values, they will be at the end of the index vector by default.
On the other hand, the function sort() returns returns the vector you pass as input sorted in ascending order by default.
Both functions order the data increasingly, and can be used for numeric or string variables. If you set the decreasing argument to TRUE in a sort() or order(), you will geet the vector of indices in descending order.
You can also use these functions to order a data frame according to a vector. Alternatively, you can also arrange or shuffle a data frame in reverse order.
#order the dataframe by one column, sort or order?coli_genomes[order(coli_genomes$Year),]
Strain Biosample Year Source Phylogroup Serotype Clonotype Sequence.Type
NA <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.1 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.2 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.3 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.4 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.5 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.6 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.7 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.8 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.9 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.10 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.11 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.12 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.13 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.14 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.15 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.16 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.17 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.18 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
NA.19 <NA> <NA> NA <NA> <NA> <NA> <NA> <NA>
VF Plasmids kmer Contigs N50 longest.contig..bp. Assembly_length
NA NA NA NA NA NA NA NA
NA.1 NA NA NA NA NA NA NA
NA.2 NA NA NA NA NA NA NA
NA.3 NA NA NA NA NA NA NA
NA.4 NA NA NA NA NA NA NA
NA.5 NA NA NA NA NA NA NA
NA.6 NA NA NA NA NA NA NA
NA.7 NA NA NA NA NA NA NA
NA.8 NA NA NA NA NA NA NA
NA.9 NA NA NA NA NA NA NA
NA.10 NA NA NA NA NA NA NA
NA.11 NA NA NA NA NA NA NA
NA.12 NA NA NA NA NA NA NA
NA.13 NA NA NA NA NA NA NA
NA.14 NA NA NA NA NA NA NA
NA.15 NA NA NA NA NA NA NA
NA.16 NA NA NA NA NA NA NA
NA.17 NA NA NA NA NA NA NA
NA.18 NA NA NA NA NA NA NA
NA.19 NA NA NA NA NA NA NA
contigs1kb average_contig
NA NA NA
NA.1 NA NA
NA.2 NA NA
NA.3 NA NA
NA.4 NA NA
NA.5 NA NA
NA.6 NA NA
NA.7 NA NA
NA.8 NA NA
NA.9 NA NA
NA.10 NA NA
NA.11 NA NA
NA.12 NA NA
NA.13 NA NA
NA.14 NA NA
NA.15 NA NA
NA.16 NA NA
NA.17 NA NA
NA.18 NA NA
NA.19 NA NA
# Random order of rows with sample coli_genomes[sample(nrow(coli_genomes), replace =FALSE), ]
Now imagine you have a large data set and want to subdivide only some cases (=rows). You already know some ways to do this, but in the following example we will test the function subset(), which is very handy when you want to extract the cases that satisfy multiple conditions.
Imagine that for a new project we want to select the strains with better genome design quality or from a subset. We will keep strains from Phylogroup A, with an assembly N50 > 150,000 bp and less than 100 contigs >= 1 kb.
#option 1: multi-stepselection<-coli_genomes[coli_genomes$contigs1kb<100,]selection<-selection[selection$N50>150000,]selection<-selection[selection$Phylogroup=='A',]#option 2: which statements selection2<-coli_genomes[which(coli_genomes$contigs1kb<100& coli_genomes$N50>150000& coli_genomes$Phylogroup=='A'),]#option 2b:with attach(dataframe) you avoid repeat the name of the dataframeattach(coli_genomes)selection2 <- coli_genomes[which(contigs1kb<100& N50>150000& Phylogroup=='A'),]detach(coli_genomes) #detach dataframe#option 3: subset() is a straightforward way to do that trick selection3<-subset(coli_genomes, subset= contigs1kb<100& N50>150000& Phylogroup=='A')
If you want to make sure that the three methods give the same output, you can check the data frame, or check the dimensions or structure with dim() or str(), but this is difficult with large data sets with hundreds or thousands of cases (see below). The function all.equal() does this task for you.
#Are they the same?all.equal(selection,selection2)
[1] TRUE
all.equal(selection,selection3)
[1] TRUE
1.2 Combining dataframes
If you work with a lot of data or get different batches of related data frames, you may have multiple tables and want to combine them in different ways. An easy way is to use cbind() or rbind() if you have the same number of rows and columns. A more practical way is to use the merge() function. Look and test the following examples using the coli_genomes data frame and a new table named colis3.csv
colis <-read.csv2(file ='data/colis3.csv')#rbind() and cbind()rbind(coli_genomes,colis) #did it work? why??
Error in rbind(deparse.level, ...): numbers of columns of arguments do not match
cbind(coli_genomes, colis)
Error in data.frame(..., check.names = FALSE): arguments imply differing number of rows: 22, 27
'data.frame': 594 obs. of 26 variables:
$ Strain.x : chr "LREC237" "LREC239" "LREC240" "LREC241" ...
$ Biosample : chr "SAMN14278613" "SAMN14278614" "SAMN14278615" "SAMN14278616" ...
$ Year.x : int NA 2010 2008 NA 2011 2007 2006 2006 2013 2013 ...
$ Source : chr "Human" "Human" "Human" "Human" ...
$ Phylogroup : chr "D" "C" "B1" "A" ...
$ Serotype : chr "ONT:H28" "O153:H19" "O76:H30" "O78:H11" ...
$ Clonotype : chr "CH23-331" "CH4-25" "CH29-38" "CH11-41" ...
$ Sequence.Type : chr "ST524" "ST88" "ST156" "ST48" ...
$ VF : int 18 14 10 5 5 7 4 2 22 22 ...
$ Plasmids : int 3 3 2 3 9 3 7 7 1 3 ...
$ kmer : int 117 117 89 117 89 93 115 115 115 111 ...
$ Contigs : int 223 159 114 212 320 158 277 203 376 205 ...
$ N50 : int 272287 323172 270767 112160 45936 106897 89185 94368 200150 281589 ...
$ longest.contig..bp.: int 662555 760527 738861 285056 128053 369508 281444 280268 424527 617142 ...
$ Assembly_length : int 5341632 5415613 4875343 5167401 4858138 4638334 5406295 4796593 5389075 5340478 ...
$ contigs1kb : int 74 57 47 101 212 93 155 114 131 78 ...
$ average_contig : num 23954 34060 42766 24375 15182 ...
$ X : int 1 1 1 1 1 1 1 1 1 1 ...
$ Strain.y : chr "LREC237" "LREC237" "LREC237" "LREC237" ...
$ Year.y : int NA NA NA NA NA NA NA NA NA NA ...
$ CRISPR : int 9 9 9 9 9 9 9 9 9 9 ...
$ Cas : chr "[CAS-TypeIE (n=1),]" "[CAS-TypeIE (n=1),]" "[CAS-TypeIE (n=1),]" "[CAS-TypeIE (n=1),]" ...
$ AMR : int 2 2 2 2 2 2 2 2 2 2 ...
$ Vir : int 20 20 20 20 20 20 20 20 20 20 ...
$ Integron : int 0 0 0 0 0 0 0 0 0 0 ...
$ seqs : chr "2020-07-24" "2020-07-24" "2020-07-24" "2020-07-24" ...
As you noticed, the function merge() combines dataframes, however it is a generic function that can be also used with other objects (like vectors or matrices), but they will be coerced to data.frame class.
By default, merge() will do a natural join or inner join, merging two dataframes in one that contains only once the common elements of both. The arguments all = TRUE, all.x = TRUE and all.y = TRUE will force an outer join in which all elements of both, the first or the second dataframes are selected. In these cases, if not all rows in the first data frame match all the rows in the second, the output is filled with NA values in those cases.
Finally, the Cartesian product of both dataframes can be obtained in R setting as NULL the argument by of the merge() function.
Quick exercise (I)
Two students enrolled in different University courses: Rafa in A, B, D, E and G and Roger in B, C, D and F. Rafa got the following marks 8, 9, 9.5, 8.75 and 9 and Roger obtained 10, 9.7, 9 and 10. Write a R program to create merged dataframes with all the marks (outer join), all the Rafa’s marks (left outer), all the Roger’s marks (right outer), and the marks in the common courses (inner join).
#Create the dataframesrafa <-data.frame(c("A","B","D","E","G"),c(8,9,9.5,8.75,9.5))roger <-data.frame(c("B","C","D","F"),c(10,9.7,9,10))names(rafa) <-c("Course","Rafa")names(roger) <-c("Course","Roger")
How would you obtain a table containing the marks of both students only for their common courses?
How would you obtain a table containing the marks of both students only for Rafa’s courses?
1.3 Data matrix format (wide vs. long table)
How should I arrange my data table?
A column per experimental condition or a column per variable? Is the same?
In the table Zebrafish_data.csv from the Lesson R5 we have the results of an experiment in which a collaborator scored the number of metastatic cancer cells upon the expression of different transcripts of the EFNA3 gene. Each transcript is cloned into a pLoC plasmid, and we have negative (empty plasmid) and positive controls (wt transcript). Let’s import and check the data.
How many columns has the table? How many variables are there?
Here we have one column per experimental condition. Thus, this table format does not agree with the standard way to introduce the data in a table, the data-matrix: Rows for cases and columns for variables.
Having the data, we transform it in a datamatrix (aka long table) using the function stack(). You can also do it the other way around with the function unstack().
However, some times the dataset is more complex and there are other variables that change the table structure, as in the table Zebrafish_full.csv. In this case, remember that stack is designed to transform tables of only two variables. Thus, you must stack only the desired two variables and then final construct the table by adding the rest of the information, for instance with cbind(), as in the example below.
#step2: reconstruct the table adding the third variableZF_full_stack <-cbind(ZF_full_some_stack,ZF_full[,7])colnames(ZF_full_stack) <-c("Cells","Sample","Assay")head(ZF_full_stack,15)
#the same result in both cases?all.equal(ZF_full_stack,ZF_full_stack2)
[1] TRUE
Remember that datamatrix is not an R structure, but a general concept in data analysis. Also, for more complex dataframes, I suggest to use the function melt(). However, this function name refers to two different functions in two alternative packages: reshape2 and data.table, with slightly different behavior.
Quick exercise (II)
From the previous exercise with marks of two students, we have a table students with all the marks, in which each student is a column.
students <-merge(rafa, roger, by ="Course", all =TRUE)students
Course Rafa Roger
1 A 8.00 NA
2 B 9.00 10.0
3 C NA 9.7
4 D 9.50 9.0
5 E 8.75 NA
6 F NA 10.0
7 G 9.50 NA
However, we need a table in which each column is a variable, as follows:
Course Mark Student
1 A 8.00 Rafa
2 B 9.00 Rafa
3 C NA Rafa
4 D 9.50 Rafa
5 E 8.75 Rafa
6 F NA Rafa
7 G 9.50 Rafa
8 A NA Roger
9 B 10.00 Roger
10 C 9.70 Roger
11 D 9.00 Roger
12 E NA Roger
13 F 10.00 Roger
14 G NA Roger
How would you obtain the second table?
#1. Create the tablestudents2 <-cbind(students[,1], stack(students[,2:3]))#Note that we have used stack() for only two columns and bind the output with the column 1 in the previous table#2. Rename variablesnames(students2) <-c("Course","Mark","Student")#3. Show tablestudents2
Course Mark Student
1 A 8.00 Rafa
2 B 9.00 Rafa
3 C NA Rafa
4 D 9.50 Rafa
5 E 8.75 Rafa
6 F NA Rafa
7 G 9.50 Rafa
8 A NA Roger
9 B 10.00 Roger
10 C 9.70 Roger
11 D 9.00 Roger
12 E NA Roger
13 F 10.00 Roger
14 G NA Roger
2 Working efficiently with large datasets
2.1 Fast loading of huge datasets and creation of contingency tables
From this point on, in some examples we will show only some lines of the output of the code chunks (you will notice that the output ends with — Cropped output —). Otherwise, this document is very long and difficult to follow.
As always, it’s encouraged to run the code yourself to see and understand the full returned output.
#open directly from the ECDCvaccines <-read.csv(file ="https://opendata.ecdc.europa.eu/covid19/vaccine_tracker/csv/data.csv", header=TRUE)#explore the datastr(vaccines)
'data.frame': 813367 obs. of 18 variables:
$ YearWeekISO : chr "2021-W02" "2023-W19" "2023-W19" "2023-W19" ...
$ ReportingCountry : chr "AT" "AT" "AT" "AT" ...
$ Denominator : int 424628 431785 7427239 1551690 524214 741680 1086320 1392642 435176 3005708 ...
$ NumberDosesReceived: int 0 0 0 0 0 0 0 0 0 0 ...
$ NumberDosesExported: int 0 0 0 0 0 0 0 0 0 0 ...
$ FirstDose : int 0 0 1 0 0 0 0 0 0 0 ...
$ FirstDoseRefused : int NA NA NA NA NA NA NA NA NA NA ...
$ SecondDose : int 0 0 0 0 0 0 0 0 0 0 ...
$ DoseAdditional1 : int 0 0 1 0 0 0 0 0 0 1 ...
$ DoseAdditional2 : int 0 0 9 0 1 1 3 1 0 3 ...
$ DoseAdditional3 : int 0 0 13 0 3 4 2 3 0 1 ...
$ DoseAdditional4 : int 0 0 0 0 0 0 0 0 0 0 ...
$ DoseAdditional5 : int 0 0 0 0 0 0 0 0 0 0 ...
$ UnknownDose : int 0 0 0 0 0 0 0 0 0 0 ...
$ Region : chr "AT" "AT" "AT" "AT" ...
$ TargetGroup : chr "Age10_14" "Age0_4" "ALL" "Age<18" ...
$ Vaccine : chr "COMBA.4-5" "MODBA.1" "MOD" "MOD" ...
$ Population : int 8932664 8978929 8978929 8978929 8978929 8978929 8978929 8978929 8978929 8978929 ...
NA
--- Cropped output ---
head(vaccines)
YearWeekISO ReportingCountry Denominator NumberDosesReceived
1 2021-W02 AT 424628 0
2 2023-W19 AT 431785 0
3 2023-W19 AT 7427239 0
4 2023-W19 AT 1551690 0
5 2023-W19 AT 524214 0
6 2023-W19 AT 741680 0
NumberDosesExported FirstDose FirstDoseRefused SecondDose DoseAdditional1
1 0 0 NA 0 0
2 0 0 NA 0 0
3 0 1 NA 0 1
4 0 0 NA 0 0
5 0 0 NA 0 0
6 0 0 NA 0 0
DoseAdditional2 DoseAdditional3 DoseAdditional4 DoseAdditional5 UnknownDose
1 0 0 0 0 0
2 0 0 0 0 0
3 9 13 0 0 0
4 0 0 0 0 0
5 1 3 0 0 0
--- Cropped output ---
Even with large datasets, we can use table() or summary() functions, to overview data. But, sometimes we just doesn’t.
summary(vaccines[which(vaccines$Region=="ES"),][,6]) #see the data from Spain
Min. 1st Qu. Median Mean 3rd Qu. Max.
0 0 0 6581 2 1512566
table(vaccines)
Error in table(vaccines): attempt to make a table with >= 2^31 elements
When exploring (very) large datasets as in the example above you can find that some functions don’t work because they can’t handle all that data (Error in table(vaccines) : attempt to make a table with >= 2^31 elements). Here, we are going to use alternative methods, more efficient and convenient for reading and handle these large datasets.
One of those tricks is the use of the package data.table, very handy for large datasets. In the following lines, we will compare reading/writting data with the function fread() and fwrite().
#load the package may require installing it beforeif(!require(data.table)){install.packages("data.table")}
Loading required package: data.table
# if that doesn't work try: install.packages("data.table", type = "source", repos = "https://Rdatatable.gitlab.io/data.table")system.time(vaccines <-read.csv(file ='data/vaccines_EU_22oct2022.csv', header=TRUE))
#we can also prevent loading of some columns to save timesystem.time(vaccines2 <-fread('data/vaccines_EU_22oct2022.csv',drop=c(3,5,7,9,10)))
user system elapsed
0.935 0.028 0.121
system.time(vaccines3 <-fread('data/vaccines_EU_22oct2022.csv',colClasses ="character")) #we can also select the variables by type
user system elapsed
3.683 0.089 0.474
2.2 Frequency tables: table() vs. xtabs()
Tabulating frequencies is a common and efficient way to explore data. While the table() function is versatile and can be used with various data structures (vectors, dataframes, lists…), it might become less convenient for complex cross-tabulations, especially with large datasets. Alternatively, as shown below, the xtabs() function offers a more streamlined approach, particularly for multi-dimensional tables. It leverages a formula-based syntax, allowing for easy specification of variables and automatic generation of row and column labels. Additionally, the data= argument in xtabs() simplifies the process by directly referencing variable names within the dataframe.
#compare table() and xtabs()table(vaccines$ReportingCountry)
AT BE BG CY CZ DE DK EE EL ES FI
17292 7330 6001 7098 6593 564 4821 7755 16413 12960 407160
FR HR HU IE IS IT LI LT LU LV MT
22743 9270 6712 6367 5215 16507 5070 11118 10476 5454 5964
NL NO PL PT RO SE SI SK
14355 4467 160225 13416 5867 9313 3131 3710
ReportingCountry
AT BE BG CY CZ DE DK EE EL ES FI
17292 7330 6001 7098 6593 564 4821 7755 16413 12960 407160
FR HR HU IE IS IT LI LT LU LV MT
22743 9270 6712 6367 5215 16507 5070 11118 10476 5454 5964
NL NO PL PT RO SE SI SK
14355 4467 160225 13416 5867 9313 3131 3710
'xtabs' int [1:30(1d)] 17292 7330 6001 7098 6593 564 4821 7755 16413 12960 ...
- attr(*, "dimnames")=List of 1
..$ ReportingCountry: chr [1:30] "AT" "BE" "BG" "CY" ...
- attr(*, "call")= language xtabs(formula = ~ReportingCountry, data = vaccines)
#Note: library(stats) if xtabs() does not work
So far, they seem very similar in terms of coding and obtained output. However, what about if you want to use to several variables?
#with 2 or more variables?table(vaccines[,c(ReportingCountry,as.factor(Vaccine))]) #not really
1 10 11 12 13 14 15 16 17 18 19
108389 117037 8332 3003 2317 92285 1973 1385 681 74429 46812
2 3 4 5 6 7 8 9 AT BE BG
2342 344 124068 58714 59509 2533 83 109131 17292 7330 6001
CY CZ DE DK EE EL ES FI FR HR HU
7098 6593 564 4821 7755 16413 12960 407160 22743 9270 6712
IE IS IT LI LT LU LV MT NL NO PL
6367 5215 16507 5070 11118 10476 5454 5964 14355 4467 160225
PT RO SE SI SK
13416 5867 9313 3131 3710
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
--- Cropped output ---
As mentioned above, xtabs() can be easily used with more than two variables. Moreover, you can create a cross-tabulated table using a numeric variable instead of frequencies. To do so, you just need to use the left side of the formula.
#also with several variables(vaccines_split2 <-xtabs(NumberDosesReceived ~ ReportingCountry +as.factor(Vaccine) +as.factor(TargetGroup), vaccines))
That was a very long output to check! If you want to show your tabulated data in a more useful format, you can covert the cross-tabulated data into a flat table with ftable(). See the examples below and try to understand how the row.bars statement works.
ReportingCountry AT BE BG CY CZ DE DK EE EL ES FI FR HR HU IE IS IT LI LT LU LV MT NL NO PL PT RO SE SI SK
as.factor(TargetGroup) 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF 1_Age<60 1_Age60+ Age<18 Age0_4 Age10_14 Age15_17 Age18_24 Age25_49 Age5_9 Age50_59 Age60_69 Age70_79 Age80+ AgeUNK ALL HCW LTCF
as.factor(Vaccine)
AZ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5519600 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 432300 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA 0 1628400 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 202920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 818300 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4035800 NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10355500 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 6513800 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1442700 0 0 0 0 0 97800 97800 97800 97800 97800 97800 97800 97800 97800 97800 97800 100880 97800 97800 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1121594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 186600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1273400 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4503400 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 578400 NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA 0 0 0 0 NA NA 0 NA NA NA NA 0 2999600 NA NA 0 0 0 0 0 NA NA NA 0 NA NA NA NA 0 NA 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 1123800 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1612810 0 0
BECNBG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 5187056 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BHACOV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA 0 NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
COM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24394773 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 7265580 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2033293 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 0 21204560 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7614360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2304060 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 25348740 NA NA 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 100959011 NA NA 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136804000 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 13163840 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11135050 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 794870 NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 763 0 0 0 0 0 0 0 22650 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6789378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1346640 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3001755 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34003726 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 11373105 NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA NA 0 0 0 NA NA 0 NA NA NA NA 0 18276235 NA NA 0 0 0 0 0 NA NA NA 0 NA NA NA NA 0 NA 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 3987390 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7723560 0 0
COMBA.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1512000 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA NA NA NA NA NA NA NA NA 0 1321920 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 279360 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 800640 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 216000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 126720 NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 1020 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 460800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2871360 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 889920 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
COMBA.4-5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5530560 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37440 0 0 0 0 NA 0 NA NA NA NA NA NA NA NA NA 0 5135040 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350400 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1428480 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23481600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 100800 NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 168000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1088640 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6325440 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 2453760 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
COMBIV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 800640 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
COMXBB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA NA NA NA 0 NA NA NA NA 0 97920 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
JANSS 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1292400 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 190100 0 0 0 0 NA 0 NA NA NA NA 0 NA NA NA NA 0 1396200 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120800 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2401800 NA NA 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3732300 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 4309200 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 281500 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 57500 NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 650 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 653097 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1259800 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2464800 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 403900 NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA 0 0 0 0 NA NA 0 NA NA NA NA 0 2820300 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 230400 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 475200 0 0
MOD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5963500 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 155200 0 0 0 0 NA 0 NA NA NA NA 0 NA NA NA NA 0 3685100 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1350690 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 270400 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1770000 NA 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54929280 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 1736400 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3290500 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 261720 NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 680 0 0 0 0 0 0 0 44500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 732830 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 302610 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1171300 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11327200 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 3982600 NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 NA NA NA 0 0 0 NA NA 0 NA NA NA NA 0 2805700 NA NA 0 0 0 0 0 NA NA NA 0 NA NA NA NA 0 NA 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 714400 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 871200 0 0
MODBA.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2474610 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24250 0 0 0 0 NA 0 NA NA NA NA 0 NA NA NA NA 0 199700 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 192750 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8321200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65350 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 2505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 303240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 543980 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6175700 0 0 0 0 0 0 0 0 NA NA 0 NA NA NA NA 0 1443150 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA 0 NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MODBA.4-5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9500 0 0 0 0 0 0 0 0 NA NA 0 NA NA NA NA 0 46750 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3315650 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98350 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 243300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA 0 NA NA NA NA 0 2271400 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA 0 NA NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MODBIV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA 0 NA NA NA NA 0 705400 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NVXD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3192000 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90000 0 0 0 0 NA 0 NA NA NA NA 0 NA NA NA NA 0 578000 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60800 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 396000 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2965000 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 198000 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA 42000 NA NA 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 105000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 707000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA 0 NA NA NA NA 0 NA 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 94000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 93000 0 0
SGSK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2243300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16576400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 115200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SIN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SPU 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA 2000000 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200000 0 0
UNK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 241419933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 NA 0 0 0 NA NA 0 NA NA NA NA NA NA 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
VLA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NA
NA
NA
--- Cropped output ---
ftable(vaccines_split2, row.vars =3)
ReportingCountry AT BE BG CY CZ DE DK EE EL ES FI FR HR HU IE IS IT LI LT LU LV MT NL NO PL PT RO SE SI SK
as.factor(Vaccine) AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA AZ BECNBG BHACOV COM COMBA.1 COMBA.4-5 COMBIV COMXBB JANSS MOD MODBA.1 MODBA.4-5 MODBIV NVXD SGSK SIN SPU UNK VLA
as.factor(TargetGroup)
1_Age<60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1_Age60+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age<18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age0_4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA 0 0 0 NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age10_14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA 0 NA NA NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA 0 0 NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age15_17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA 0 0 NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age18_24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 763 1020 0 0 0 0 680 2505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA NA 0 NA NA NA 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age25_49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA NA 0 NA NA NA 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age5_9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA 0 0 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age50_59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA 0 NA NA NA 0 0 NA NA NA NA 0 NA NA NA 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age60_69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA NA 0 NA NA NA 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age70_79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA NA 0 NA NA NA 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Age80+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA 0 0 NA NA NA 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AgeUNK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA NA 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ALL 5519600 0 0 24394773 1512000 5530560 0 0 1292400 5963500 2474610 0 0 3192000 2243300 0 0 0 151200 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 7265580 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 432300 0 0 2033293 0 37440 0 0 190100 155200 24250 9500 0 90000 0 0 0 0 0 1628400 0 0 21204560 1321920 5135040 0 97920 1396200 3685100 199700 46750 0 578000 64800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 241419933 0 202920 0 0 7614360 0 0 0 0 42300 1350690 0 0 0 0 0 0 0 0 0 818300 0 0 2304060 279360 350400 0 0 120800 270400 192750 98400 0 60800 0 0 0 0 0 4035800 0 0 25348740 800640 1428480 0 0 2401800 1770000 0 0 0 396000 0 0 0 0 0 NA 0 0 100959011 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 NA NA 10355500 0 0 136804000 0 23481600 0 0 3732300 54929280 8321200 3315650 0 2965000 16576400 0 0 NA 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 6513800 5187056 0 13163840 216000 0 0 0 4309200 1736400 0 0 0 0 0 0 2000000 0 0 1442700 0 0 11135050 0 0 0 0 281500 3290500 0 0 0 198000 0 0 0 0 0 100880 0 0 794870 126720 100800 0 0 57500 261720 65350 98350 0 42000 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 22650 0 0 0 0 650 44500 0 0 0 0 0 0 0 0 0 1121594 0 0 6789378 0 0 0 0 653097 732830 0 0 0 0 0 0 0 10162 0 186600 0 0 1346640 86400 168000 0 18240 80250 302610 303240 243300 0 105000 0 0 0 0 0 1273400 0 0 3001755 460800 1088640 0 0 1259800 1171300 543980 123600 0 189600 108000 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 4503400 0 0 34003726 2871360 6325440 0 0 2464800 11327200 6175700 0 0 707000 0 0 0 0 0 578400 0 0 11373105 889920 2453760 0 0 403900 3982600 1443150 2271400 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA NA NA NA NA NA 0 0 NA NA NA NA 0 NA NA NA 0 0 0 2999600 0 0 18276235 0 0 0 0 2820300 2805700 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 0 NA 0 0 0 NA 0 0 0 0 0 1123800 0 0 3987390 0 0 800640 58560 230400 714400 0 0 705400 94000 115200 0 0 0 0 1612810 0 0 7723560 0 0 0 0 475200 871200 0 0 0 93000 0 0 200000 0 0
HCW 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA NA 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LTCF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA 0 0 NA 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA 0 NA NA NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 NA 0 NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 NA 0 0 0 NA 0 NA NA 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97800 0 0 NA NA NA 0 0 NA NA 0 0 0 NA 0 0 0 0 0 NA 0 0 NA NA NA 0 0 NA NA NA NA 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
NA
NA
NA
NA
NA
--- Cropped output ---
Quick exercise (III)
Sometimes, it is better to use a shorter table as an example… Let’s go back to the coli_genomes data that you already know.
Could you obtain a table like the following, with the number of Contigs by isolation source (Source) and phylogenetic group (Phylogroup)?
Phylogroup
Source A B1 C D
Avian 134 102 108 0
Human 790 208 662 1010
Porcine 958 0 0 0
Now, let’s do it a little bit more complicated. If we split the previous table by the STs (aka. multilocus sequence typing), you obtain a very large table:
, , Sequence.Type = ST10
Phylogroup
Source A B1 C D
Avian 0 0 0 0
Human 120 0 0 0
Porcine 277 0 0 0
, , Sequence.Type = ST1049
Phylogroup
Source A B1 C D
Avian 0 0 0 0
Human 0 94 0 0
Porcine 0 0 0 0
, , Sequence.Type = ST10888
Phylogroup
Source A B1 C D
Avian 0 0 0 0
Human 0 0 0 0
Porcine 203 0 0 0
, , Sequence.Type = ST10890
Phylogroup
Source A B1 C D
Avian 0 0 0 0
Human 0 0 171 0
Porcine 0 0 0 0
, , Sequence.Type = ST137
Phylogroup
Source A B1 C D
Avian 0 0 0 0
Human 0 0 0 205
Porcine 0 0 0 0
, , Sequence.Type = ST156
Phylogroup
Source A B1 C D
Avian 0 0 0 0
Human 0 114 0 0
Porcine 0 0 0 0
, , Sequence.Type = ST3011
--- Cropped output ---
This is quite a long cross-table that we have cropped on the output, maybe you could find more convenient transforming it to a flat contingency table with ftable().
How would you generate a flat table using the previous cross-tabulated table?
If you test the different options, you will notice that the format of the table can be defined by the order of the variables and also using the arguments row.vars and col.vars to define which variables will be summarized as column or row.
Again, rather than concepts from R or RStudio, cross-tabulation and flat contingency tables are general concepts in data analysis.
3 Data aggregation and transformation
3.1 By() & aggregate()
While frequency tables can be very quickly generated with table() and xtable(), sometimes you may want other calculations than frequency, like basic statistics per group or other, even custom, calculations.
You have already tried the function by() as a very useful trick to make group-calculations. However, this function has some limitations when we have large datasets and when we try to use multiple factors that can be solved with aggregate(). In both cases, the function can be any function that suits your data, either from R packages or a custom function.
In the following example, we are using a smaller dataset named vacines2 that we can obtain by sampling (randomly extraction of a portion of data) with the R function sample().
vaccines2$Region: AT
[1] 1820.799
------------------------------------------------------------
vaccines2$Region: BE
[1] 129075
------------------------------------------------------------
vaccines2$Region: BG
[1] 7526.923
------------------------------------------------------------
vaccines2$Region: CY
[1] 961.1449
------------------------------------------------------------
vaccines2$Region: CZ
[1] 42646.17
------------------------------------------------------------
vaccines2$Region: DE
[1] 1508313
------------------------------------------------------------
vaccines2$Region: DK
[1] 846.0469
------------------------------------------------------------
vaccines2$Region: EE
[1] 568.2353
------------------------------------------------------------
vaccines2$Region: EL
--- Cropped output ---
In the example above, we could calculate the mean by groups. Can we do it with more than one grouping factor? Let’s try some alternatives and see the output
by(vaccines2$NumberDosesReceived, INDICES = vaccines2$Region + vaccines2$Vaccine, FUN=mean, na.rm=TRUE)
Error in vaccines2$Region + vaccines2$Vaccine: non-numeric argument to binary operator
by(vaccines2$NumberDosesReceived, INDICES =c(vaccines2$Region,vaccines2$Vaccine), FUN=mean, na.rm=TRUE)
Error in tapply(seq_len(50000L), list(`c(vaccines2$Region, vaccines2$Vaccine)` = c("FI1D3", : arguments must have same length
by(vaccines2$NumberDosesReceived, INDICES =list(vaccines2$Region,vaccines2$Vaccine), FUN=mean, na.rm=TRUE)
: AT
: AZ
[1] 0
------------------------------------------------------------
: BE
: AZ
[1] 7200
------------------------------------------------------------
: BG
: AZ
[1] 15120
------------------------------------------------------------
: CY
: AZ
[1] 1293.151
------------------------------------------------------------
: CZ
: AZ
[1] 1000
------------------------------------------------------------
: DE
: AZ
[1] NA
------------------------------------------------------------
: DK
--- Cropped output ---
When you find difficult using by(), aggregate() is usually the best quick alternative
#aggregate is more convenient sometimesaggregate(vaccines2$NumberDosesReceived ~ vaccines2$Region, FUN=mean)
vaccines2$Region vaccines2$NumberDosesReceived
1 AT 1.820799e+03
2 BE 1.290750e+05
3 BG 7.526923e+03
4 CY 9.611449e+02
5 CZ 4.264617e+04
6 DE 1.508313e+06
7 DK 8.460469e+02
8 EE 5.682353e+02
9 EL 2.371864e+04
10 ES 3.382172e+05
11 FI 1.116314e+05
12 FR 1.957214e+05
13 HR 8.688250e+04
14 HU 6.722391e+04
--- Cropped output ---
Region Vaccine NumberDosesReceived
1 AT AZ 0.000000e+00
2 BE AZ 7.200000e+03
3 BG AZ 1.512000e+04
4 CY AZ 1.293151e+03
5 CZ AZ 1.000000e+03
6 DK AZ 1.824000e+03
7 EE AZ 0.000000e+00
8 EL AZ 3.296000e+04
9 ES AZ 4.043429e+05
10 FR AZ 0.000000e+00
11 HR AZ 8.820000e+04
12 HU AZ 1.478125e+05
13 IE AZ 3.272727e+03
14 IS AZ 2.492857e+03
--- Cropped output ---
#note that by default NAs are disregardedaggregate(FirstDoseRefused ~ TargetGroup, data=vaccines2, na.action =NULL, FUN=median)
TargetGroup FirstDoseRefused
1 1_Age<60 NA
2 1_Age60+ NA
3 Age<18 NA
4 Age0_4 NA
5 Age10_14 NA
6 Age15_17 NA
7 Age18_24 NA
8 Age25_49 NA
9 Age5_9 NA
10 Age50_59 NA
11 Age60_69 NA
12 Age70_79 NA
13 Age80+ NA
14 AgeUNK NA
--- Cropped output ---
#we can make it for several numeric variables at the same timeaggregate(cbind(NumberDosesReceived,FirstDose,SecondDose) ~as.factor(TargetGroup), data=vaccines2, FUN=mean)
We can also add a custom function, using the short, usually with the inline notation:
#we can also use custom functions hereaggregate(cbind(FirstDose,SecondDose) ~as.factor(TargetGroup), data=vaccines2, FUN=function(x) mean(x)*100/mean(vaccines2$NumberDosesReceived, na.rm=TRUE))
Can you obtain the following table displaying the mean (%) of virulece factors (VF) and plasmids per genome nucleotide (Assembly_length) grouped by Source
The functions of the Apply family are designed to apply a function to each element of a data structure. It includes various functions, designed for matrices, dataframes or lists. What is special about these functions is that their arguments are not only data but also functions. Using an apply function can sometimes seem complicated, but once you get used to it, it’s actually very handy and faster than other alternatives, such as loops. In this section, we look at the apply() function and its variants, including lapply(), sapply(), tapply(), rapply() & mapply(). In general, Apply is a very efficient tool to perform repetitive calculations.
Rather than describing in detail all the functions, in the following examples we test some of the possibilities of some applies. Try yourself and check the code comments.
#apply()apply(vaccines[,4:12], MARGIN =1, FUN = mean, na.rm=TRUE)
Note that you can use any function, although apply()is best suited for numeric calculations as it coerces your data to an array (via as.matrix()). Thus, when a dataframe cannot be transformed in a matrix your function may return fail. In the example above is.numeric() returns false for all columns within the apply when the dataframe contains character data, but if we use a subset that only contains numeric data the result makes sense. As you can see below, sapply() and lapply() are best suited for this kind of functions.
#lapply() and sapply() are very usefullapply(by(vaccines$Population,vaccines$ReportingCountry,mean), log10)
AT BE BG CY CZ DE DK EE
6.952307 7.064378 6.836669 5.955408 7.021618 7.920154 6.767897 6.124304
EL ES FI FR HR HU IE IS
7.022918 7.675960 6.743725 7.831098 6.594992 6.987135 6.702566 5.571271
IT LI LT LU LV MT NL NO
7.771600 4.593620 6.447600 5.808232 6.274627 5.715350 7.244198 6.733418
PL PT RO SE SI SK
7.576630 7.014051 7.280790 7.018045 6.323863 6.736098
#lapply take a list (or object that can be coerced as one) and gives a listclass(sapply(by(vaccines$Population,vaccines$ReportingCountry,mean), log10) )
[1] "numeric"
#sapply is actually a 'wrapper' of lapply that returns a vector or matrix instead of a listsapply(list(vaccines2$Population, vaccines2$FirstDose,vaccines2$SecondDose, vaccines2$NumberDosesReceived), median) # we can do it with several variables
[1] 5548241 0 0 NA
sapply(vaccines2,class) #again, you can use any function, not only numeric calculations
#other apply functions are more case-specific:#mapply() is the matrix (or multivariable) versionmapply(sub,vaccines2[,4],vaccines2[,6],vaccines2[,7])
Warning in (function (pattern, replacement, x, ignore.case = FALSE, perl =
FALSE, : argument 'pattern' has length > 1 and only the first element will be
used
Warning in (function (pattern, replacement, x, ignore.case = FALSE, perl =
FALSE, : argument 'replacement' has length > 1 and only the first element will
be used
NumberDosesReceived
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA
[7,] NA
[8,] NA
[9,] NA
--- Cropped output ---
mapply(rep, letters[1:4], 4:1)
$a
[1] "a" "a" "a" "a"
$b
[1] "b" "b" "b"
$c
[1] "c" "c"
$d
[1] "d"
#tapply() breaks a vector into pieces, can be used instead of aggregatetapply(vaccines$NumberDosesReceived, vaccines$ReportingCountry, median,na.rm=TRUE)
AT BE BG CY CZ DE DK EE EL ES FI
0 0 0 0 0 842400 0 0 0 0 91875
FR HR HU IE IS IT LI LT LU LV MT
0 34800 0 0 0 0 0 0 0 0 NA
NL NO PL PT RO SE SI SK
0 0 0 0 0 0 0 0
#rapply can be a handy trick for recursive calculationsrapply(vaccines, mean, class="integer")
Denominator NumberDosesReceived NumberDosesExported FirstDose
NA NA NA 1.147629e+03
FirstDoseRefused SecondDose DoseAdditional1 DoseAdditional2
NA 1.044477e+03 8.282688e+02 2.215100e+02
DoseAdditional3 DoseAdditional4 DoseAdditional5 UnknownDose
3.164597e+01 4.815256e-01 4.917829e-06 9.610626e+00
Population
1.584276e+07
rapply(vaccines, table, class="factor")
NULL
vaccines$ReportingCountry<-as.factor(vaccines$ReportingCountry)vaccines$Vaccine<-as.factor(vaccines$Vaccine)vaccines$TargetGroup<-as.factor(vaccines$TargetGroup)vaccines$Region<-as.factor(vaccines$Region)rapply(vaccines, table, class="factor") #factors need to be defined and now it gives the counts for each group of each factor
Note that tapply() and by() are very similar. Indeed, by() is a wrapper of tapply(). On the other hand, vapply() is similar to sapply, but has a pre-specified type of return value, so it can be safer (or faster) to use sometimes. Finally, rapply() is not very often used, but it can be the best option for complex datasets, like those including nested lists or complex lists with several dataframes and/or vectors.
The applications of apply functions are very wide, particularly the apply() and lapply(). You can use them to parse data with many different input and output structures and almost any kind of R functions, including plots (see Lesson R8).
Quick exercise (V)
Of course, based on the coli_genomes dataframe.
How would you obtain log10 of the mean of all the columns?
Yes, a function must be suitable for the selected data and the dataframe coli_genomes contains numeric and categorical variables, but the function log10(mean) only can work with numeric data. Let’s do it in two steps:
How would you select only numeric columns?
How would you obtain log10 of the mean of all the numeric columns?
1. Generate two contingency tables showing the number of tests done (1) by country per week and (2) by country per month.
Hint. For the second table, use the function ISOweek2date() from the package “ISOweek” to transform the ISO date_week to standard date format.
2. Remove all the character columns to create a subset dataframe named minitests. You can use subset() and sapply() here.
3. Use apply() to obtain the min, max, median and mean of each column.
4. Use tapply() to obtain the mean, median and min of new_cases per country and construct a dataframe with the result.
Hint. Consider how to handle NA’s.
6Extra exercises
The topics in this lesson can be dense and bewildering the first time. I selected some sheets of exercises from great websites that can give you an extra practice.