Skip to content

Commit b7c184c

Browse files
clean up royal 92
1 parent ebc711e commit b7c184c

3 files changed

Lines changed: 3123 additions & 3027 deletions

File tree

data-raw/df_royal92.R

Lines changed: 111 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ library(readr)
55
library(usethis)
66
library(BGmisc)
77

8-
8+
date_qualifier_regex <- "\\b(?:A[BF]T|BE[TF])\\b\\s*"
9+
text_cleanup_regex <- c(
10+
"/|\\(twin\\)" = "",
11+
"_" = " ",
12+
"\\s*-\\s*" = "-"
13+
)
914

1015
## Create dataframe
1116
royal92 <- df_raw <- readGedcom("data-raw/royal92.ged")
@@ -16,40 +21,131 @@ royal92 <- ped2fam(royal92, personID = "personID") %>%
1621
-name_surn,
1722
-FAMC,
1823
-FAMS
19-
) %>%
24+
) %>%
25+
addPersonToPed(
26+
personID = 1147,
27+
name = "Henry de Montfort",
28+
sex = "M",
29+
momID = 1370,
30+
dadID = 873,
31+
overwrite = TRUE
32+
) %>% addPersonToPed(
33+
personID = 3011,
34+
name = "Simon de Montfort the Younger",
35+
sex = "M",
36+
momID = 1370,
37+
dadID = 873
38+
)
39+
40+
41+
royal92_cleaned <- royal92 %>%
2042
mutate(
2143
momID = as.numeric(momID),
2244
dadID = as.numeric(dadID),
23-
name = str_remove(name, "/"),
24-
aproximated_dob = case_when(
25-
str_detect(birth_date, "ABT|BET|AFT|BEF") == TRUE ~ TRUE,
45+
approximated_dob = case_when(
46+
str_detect(birth_date, date_qualifier_regex) ~ TRUE,
2647
str_length(birth_date) == 4 ~ TRUE,
2748
TRUE ~ FALSE
2849
),
29-
aproximated_dod = case_when(
30-
str_detect(death_date, "ABT|BET|AFT|BEF") == TRUE ~ TRUE,
50+
approximated_dod = case_when(
51+
str_detect(death_date, date_qualifier_regex) ~ TRUE,
3152
str_length(death_date) == 4 ~ TRUE,
3253
TRUE ~ FALSE
3354
),
34-
birth_date = str_replace_all(birth_date, "ABT|BET|AFT|BEF", ""),
35-
death_date = str_replace_all(death_date, "ABT|BET|AFT|BEF", ""),
55+
birth_date = str_replace_all(
56+
birth_date, date_qualifier_regex, "") %>%
57+
str_squish(),
58+
death_date = str_replace_all(
59+
death_date, date_qualifier_regex, "") %>%
60+
str_squish(),
61+
# if only year is given, assign 15th June as the date
3662
birth_date = case_when(
63+
personID == 1147 ~ "15 NOV 1238",
64+
personID == 1149 ~ "7 OCT 1816",
65+
personID == 2456 ~ "15 JUN 1070",
66+
personID == 2985 ~ "26 APR 1924",
67+
personID == 3011 ~ "15 APR 1240",
3768
str_length(birth_date) == 0 ~ NA_character_,
3869
str_length(birth_date) == 4 ~ paste0("15 JUN ", birth_date),
3970
TRUE ~ birth_date
40-
),
41-
birth_date = as.Date(str_trim(birth_date), format = "%d %b %Y"),
71+
) %>%
72+
str_trim() %>%
73+
as.Date(format = "%d %b %Y"),
74+
# if only year is given, assign 15th June as the date
4275
death_date = case_when(
76+
personID == 1147 ~ "4 AUG 1265",
77+
personID == 1149 ~ "12 APR 1817",
78+
personID == 2456 ~ "14 FEB 1117",
79+
personID == 2985 ~ "14 DEC 1997",
80+
personID == 3011 ~ "15 JUN 1271",
4381
str_length(death_date) == 0 ~ NA_character_,
4482
str_length(death_date) == 4 ~ paste0("15 JUN ", death_date),
4583
TRUE ~ death_date
46-
),
47-
death_date = as.Date(str_trim(death_date), format = "%d %b %Y"),
84+
) %>%
85+
str_trim() %>%
86+
as.Date(format = "%d %b %Y"),
4887
name = case_when(
88+
personID == 12 ~ "Alexandra of Denmark (Alix)",
89+
personID == 27 ~ "Victoria Eugenie (Ena)",
90+
personID == 39 ~ "Alexandra Fedorovna (Alix)",
91+
personID == 41 ~ "Dagmar (Marie) of Denmark",
92+
personID == 84 ~ "Elizabeth (Ella)",
93+
personID == 85 ~ "Mary (May)",
94+
personID == 136 ~ "Mary Adelaide (Fat Mary)",
95+
personID == 155 ~ "Michael (Mischa) Alexandrovich Romanov",
96+
personID == 785 ~ "Richard Curzon-Howe",
97+
personID == 788 ~ "James Hamilton",
98+
personID == 1197 ~ "Karl Theodor (Gackl)",
99+
personID == 1200 ~ "Sophie Charlotte Auguste",
100+
personID == 1442 ~ "Ferdinand Philippe Marie d'Orléans",
101+
personID == 1594 ~ "John IV (the Conqueror) of Montfort",
102+
personID == 1709 ~ "Henry Somerset",
103+
personID == 2851 ~ "Ernest Frederick III of Saxe-Hildburghausen",
49104
personID == 2944 ~ "William Scott of Buccleuch Montagu-Douglas",
50-
TRUE ~ str_replace_all(name, "_", " ")
51-
)
105+
personID == 2990 ~ "William Legge",
106+
personID == 2991 ~ "Rupert Legge",
107+
personID == 2992 ~ "Charlotte Legge",
108+
personID == 2993 ~ "Henry Legge",
109+
110+
TRUE ~ name %>%
111+
str_replace_all(text_cleanup_regex) %>%
112+
str_squish()
113+
),
114+
twinID = case_when(
115+
personID == 223 ~ 222,
116+
personID == 222 ~ 223,
117+
personID == 1116 ~ 1117,
118+
personID == 1117 ~ 1116,
119+
personID == 1155 ~ 1156,
120+
personID == 1156 ~ 1155,
121+
TRUE ~ NA_real_
122+
),
123+
attribute_title = attribute_title %>%
124+
str_replace_all(text_cleanup_regex) %>%
125+
str_squish(),
126+
sex = case_when(
127+
personID %in% c(1098,
128+
1753,
129+
1755,
130+
1756,
131+
1803,
132+
2033,
133+
2509,
134+
2990,
135+
2991,
136+
2993
137+
) ~ "M",
138+
personID %in% c(1149,
139+
2992
140+
) ~ "F",
141+
TRUE ~ sex
52142
)
143+
)
144+
145+
146+
147+
royal92 <- royal92_cleaned %>%
148+
select(-approximated_dob, -approximated_dod)
53149
# "22 AUG 1485"
54150
# if missing momID or dadID, assign the next available ID
55151

@@ -68,7 +164,6 @@ checkis_acyclic <- checkPedigreeNetwork(royal92,
68164
checkis_acyclic
69165
if (checkis_acyclic$is_acyclic) {
70166
message("The pedigree is acyclic.")
71-
72167
write_csv(royal92, here("data-raw", "royal92.csv"))
73168
usethis::use_data(royal92, overwrite = TRUE, compress = "xz")
74169
} else {

0 commit comments

Comments
 (0)