-
Notifications
You must be signed in to change notification settings - Fork 0
/
wfp_dataset_names.Rmd
72 lines (60 loc) · 2.09 KB
/
wfp_dataset_names.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
---
title: "Table column names"
description: Get the names of the columns from each table within a table, taken from MySQL tables within the database 'wfp'.
---
<!-- Targets -->
* Join tables per following traits
`Nutrition Requirements per populace per country`
[x]1.Nutrition = Nutrition per commodity
[x]2.Landuse = Commodity quantity per arable land per country
[x]3.Trade = Commodity exported/imported per country
[x]4.Products = Commodity grown per country
[x]5.Currency = Exchange prices per country
[x]6.Price = Commodity prices per country
per market
Living wages per person per country
per market
* List names per dataset
```{r, message=FALSE}
library(DBI)
library(tidyverse)
con <- dbConnect(RMariaDB::MariaDB(), user = "mysql", password = "password", dbname = "wfp")
# Get tables from 'wfp'
tables <- data.frame(dbListTables(con), stringsAsFactors = F)
fields <- list()
# tables.fields <- tibble()
for(i in c(1:length(tables$dbListTables.con.))){
fields <- rbind(fields, list(dbListFields(con, tables$dbListTables.con.[i])))
}
dbDisconnect(con)
table.fields <- tibble(); for(i in 1:12){
table.fields <- rbind(as.list(table.fields), list(c(tables[[1]][i], fields[[i]])))
}
rm(con, fields, tables, i)
# Function is run twice as multiple required to meet matching lengths
for(i in 1:12){
if(length(table.fields[[i]]) < 13){
table.fields[[i]] <- c(table.fields[[i]], NA)}}
table.fields <- unname(data.frame(lapply(table.fields, unlist), stringsAsFactors = F))
```
```{r}
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
table.fields$common <- apply(table.fields, 1, Mode)
table.fields[1,13] <- "Common"
colnames(table.fields) <- table.fields[1,]
table.fields <- table.fields[-1,]
for(i in 1:12){
for(j in 1:12){
if(identical(table.fields[i,j],table.fields[i,"Common"])){
table.fields[i,j] <- NA
}
}
}
```
```{r}
con <- dbConnect(RMariaDB::MariaDB(), user = "mysql", password = "password", dbname = "wfp")
dbDisconnect(con)
```