@@ -5,19 +5,24 @@ output: html_notebook
5
5
6
6
** Goal:** identify countries on opposite sides
7
7
8
+ ## Disclaimers
9
+
10
+ - User should verify the results
11
+ - There is a potential to generate more concise code. Meanwhile, this appears to work just fine.
12
+
8
13
## Load Libraries
9
14
10
- ``` {r}
15
+ ``` {r loadpackages }
11
16
library(tidyverse)
12
17
```
13
18
14
19
15
20
## Example Data
16
21
17
- ``` {r}
18
- country <- c("A","B","C","D","A","E","F","A ","C ","D ","G ","H ")
22
+ ``` {r sampledata }
23
+ country <- c("A","B","C","D","A","E","F","X ","Y ","Z ","Q ","R ")
19
24
dispute <- c(1,1,1,1,2,2,2,3,3,3,3,3)
20
- side_a <- c(0,0,1,1,0,1,1,0,1 ,0,1,0 )
25
+ side_a <- c(0,0,1,1,0,1,1,0,0 ,0,1,1 )
21
26
side_b <- c(1,1,0,0,1,0,0,1,1,1,0,0)
22
27
23
28
country_df <- data_frame(country, dispute, side_a, side_b)
@@ -30,7 +35,7 @@ country_df
30
35
31
36
### Side B Countries
32
37
33
- ``` {r}
38
+ ``` {r sidea }
34
39
side_a <- country_df %>%
35
40
filter(side_a == 0)
36
41
39
44
40
45
### Side A Countries
41
46
42
- ``` {r}
47
+ ``` {r sideb }
43
48
side_b <- country_df %>%
44
49
filter(side_a == 1)
45
50
@@ -49,41 +54,43 @@ side_b
49
54
50
55
## Transform Data ; Build Data Frame
51
56
52
- ``` {r}
57
+ ``` {r for_df }
53
58
54
59
# declare Tibble (data frame)
55
60
df_total = tibble()
56
61
57
62
for (i in 1:max(country_df$dispute)) {
58
- # Build vector of disputants for each Dispute Category
63
+ # Build vector of disputants (multi-valued cell: country_y)
59
64
country_y <- country_df %>%
60
65
filter(dispute == i) %>%
61
66
select(-dispute) %>%
62
- mutate(side_a = if_else(side_a == 0, country, NA_character_),
63
- side_b = if_else(side_b == 0, country, NA_character_)) %>%
67
+ mutate(side_b = if_else(side_b == 0, country, NA_character_)) %>%
64
68
select(side_b) %>%
65
- na.omit () %>%
69
+ drop_na () %>%
66
70
unique() %>%
67
- .[[1]] %>%
68
- paste(., collapse = "|")
71
+ as_vector() %>%
72
+ paste0( collapse = "|")
69
73
70
74
# Build a data frame that adds the disputants vector as a column-variable;
71
- # drops blank rows ; then split the multi-valued cells (disputants)
75
+ # drops blank rows ; separate the multi-valued cells (disputants/country_y)
76
+ # into rows
72
77
country_df_temp <- country_df %>%
73
78
filter(dispute == i) %>%
74
- mutate(side_a = if_else(side_a == 0, country, NA_character_),
75
- country_disputes = if_else(side_b == 1, country_y, NA_character_)) %>%
76
- select(country, country_disputes) %>%
79
+ mutate(country_disputes = if_else(side_b == 1, country_y, NA_character_)) %>%
77
80
drop_na() %>%
78
- separate_rows(country_disputes, convert = TRUE) %>%
79
- arrange(country_disputes) %>%
80
- mutate(Dispute = i)
81
+ separate_rows(country_disputes, convert = TRUE)
81
82
82
83
# Append big Dataframe from from the iterated dataframes
83
84
df_total <- bind_rows(df_total, country_df_temp)
84
85
85
86
}
86
87
87
- df_total
88
+ df_total%>%
89
+ arrange(country_disputes) %>%
90
+ rename(country_x = country,
91
+ counrty_y = country_disputes) %>%
92
+ select(dispute, counrty_y, country_x)
93
+
94
+ ```
95
+
88
96
89
- ```
0 commit comments