# Liste des librairies utilisées dans ce documents
library(kableExtra)
library(plyr)
library(dplyr)
library(stringr)
library(rlist)
library(tidyr)
Alignement de données vers ArkeoGIS à l’aide du logiciel R
1 Présentation des données originelles
Le jeu de données utilisé ici provient d’une base données hébergée sur le site Heurist qui permet la création de bases de données relationnelles et l’export des données croisées au format csv. Dans cet export, Table 1, se trouvent les informations relatives aux objets et leurs typologies, ainsi qu’aux sites sur lesquels ils ont éte mis au jour.
Par ailleurs, certaines informations, concernant plus particulièrement les sites, n’ont pas été importées dans cette base, mais sont conservées au format Access. Ces éléments ont été exportés au format csv (Table 2) et peuvent être reliés à la table objets grâce à l’identifiant de site.
Tous les éléments nécessaire à l’import dans ArkeoGIS sont donc déjà présents dans ces deux jeux de données, mais pas forcément dans les bonnes colonnes ni au bon format. Ces tables doivent donc être assemblées et nettoyées, puis être alignées sur le thésaurus spécifique au site ArkeoGIS avant d’y être déposées.
# Import des deux jeux de donnés dans R
<- read.csv2("data/Objet.csv", sep = ",", encoding = "UTF-8")
objets <- read.csv2("data/Site.csv", sep = ";", encoding = "UTF-8") sites
Objet.H.ID | Unique.public.identifier | catégorie.objet | Materiaux | Site.objet.H.ID | Unique.public.identifier.1 | Lieu.dit | Commune.H.ID | Name...Title | Mappable.location..geospatial. | Type.objet.H.ID | rec_Title | Datation.type.H.ID | Name...Title.1 | Bibliographie..Référence.biblio..H.ID | rec_Title.1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
42244 | APP0001 | harnais | Alliage cuivreux | 6929 | SIT0092 | Augusta Raurica | 5906 | Augst | POINT(7.71468 47.53557) | 7437 | harnais - Artefacts APH-4000, Bishop 1988 | 7026|7027|7028 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | 201387|181260 | Artefacts APH-4068|Deschler-Erb 1999, n° 386 |
42245 | APP0010 | harnais | Alliage cuivreux | 6545 | SIT0575 | Rheingönheim | 5136 | Ludwigshafen am Rhein | POINT(8.41944 49.44514) | 7437 | harnais - Artefacts APH-4000, Bishop 1988 | 7026|7027|7028 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | 203143|201387|193274 | Bishop 1992, fig. 15, n°1-2|Artefacts APH-4068|Ulbert 1969, Pl.28 n°4 |
42246 | APP0100 | harnais | Alliage cuivreux | 6918 | SIT0091 | Vindonissa | 5895 | Windisch an der Aare | POINT(8.21842 47.47899) | 7447 | harnais - Artefacts APH-4000, Bishop 1988 | 7030|7031|7032|7033 | 100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | 193339|201165 | Unz, Deschler-Erb 1997, pl. 63, n° 1812|Artefacts APH-4051 |
ID_SITE | Centroide | Etat.de.la.recherche | Occupation | Datation | Bibliographie | Activités.artisanales | Type.de.site |
---|---|---|---|---|---|---|---|
SIT0001 | VRAI | Fouillé | Non renseigné | IVe s. av. - IVe s. apr. | R. Cordie-Hachenberg, A. Haffner 1991, Haffner 1971 | Funéraire | |
SIT0002 | VRAI | Non renseigné | Non renseigné | Habitat indéterminé | |||
SIT0003 | VRAI | Non renseigné | Non renseigné | Indéterminé |
2 Nettoyage de la table
La première étape, pour préparer le jeu de données, consiste à nettoyer la table en enlevant les colonnes inutiles. Cette opération est évidemment différentes selon les jeux de données. Il s’agit en particulier ici des identifiants uniques permettant les liens entre les différentes tables dans Heurist, c’est-à-dire toutes les colonnes contenant l’information H.ID dans leur titre.
À l’aide d’une expression régulière, il est alors possible de supprimer toutes les colonnes finissant par les lettres ID.
# Supprimer les colonnes inutiles avec une expressions régulières
<- as.data.frame(objets[,-grep(".*ID$", colnames(objets))]) n_objet
Unique.public.identifier | catégorie.objet | Materiaux | Unique.public.identifier.1 | Lieu.dit | Name...Title | Mappable.location..geospatial. | rec_Title | Name...Title.1 | rec_Title.1 |
---|---|---|---|---|---|---|---|---|---|
APP0001 | harnais | Alliage cuivreux | SIT0092 | Augusta Raurica | Augst | POINT(7.71468 47.53557) | harnais - Artefacts APH-4000, Bishop 1988 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | Artefacts APH-4068|Deschler-Erb 1999, n° 386 |
APP0010 | harnais | Alliage cuivreux | SIT0575 | Rheingönheim | Ludwigshafen am Rhein | POINT(8.41944 49.44514) | harnais - Artefacts APH-4000, Bishop 1988 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | Bishop 1992, fig. 15, n°1-2|Artefacts APH-4068|Ulbert 1969, Pl.28 n°4 |
APP0100 | harnais | Alliage cuivreux | SIT0091 | Vindonissa | Windisch an der Aare | POINT(8.21842 47.47899) | harnais - Artefacts APH-4000, Bishop 1988 | 100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Unz, Deschler-Erb 1997, pl. 63, n° 1812|Artefacts APH-4051 |
3 Transformer la table au format ArkeoGIS
Pour que le jeu de données soit compatible avec la plateforme ArkeoGIS, il doit être composé des 22 colonnes suivantes. Pour chacune, une valeur et un type précis sont définis (voir le manuel en ligne pour plus d’informations).
Dans la table utilisée pour cet exemple, si certaines colonnes sont déjà au bon format, d’autres vont nécessiter quelques manipulations.
Le modèle de données est téléchargeable ici
# Import du modèle de données ArkeoGIS
<- read.csv2("data/Model.csv", sep = ";") arkeoGIS
[1] "SITE_SOURCE_ID" "SITE_NAME" "MAIN_CITY_NAME"
[4] "GEONAME_ID" "PROJECTION_SYSTEM" "LONGITUDE"
[7] "LATITUDE" "ALTITUDE" "CITY_CENTROID"
[10] "OCCUPATION" "STATE_OF_KNOWLEDGE" "STARTING_PERIOD"
[13] "ENDING_PERIOD" "CARAC_NAME" "CARAC_LVL1"
[16] "CARAC_LVL2" "CARAC_LVL3" "CARAC_LVL4"
[19] "CARAC_EXP" "BIBLIOGRAPHY" "COMMENTS"
[22] "WEB_IMAGES"
3.1 Les colonnes à renommer
Pour un certain nombre de colonnes, aucune modifications n’est nécessaire. Il suffit de les renommer en fonction de la table fournit dans le manuel d’ArkeoGIS.
SITE_SOURCE_ID : cette colonne, désigne l’identifiant unique se reportant au site sur lequel l’objet a été mis au jour. Ici, cette information se trouve dans la colonne Unique.public.identifier.1, la colonne Unique.public.identifier indiquant l’identifiant unique de l’objet en lui même.
SITE_NAME : le nom du site se trouve dans la colonne Lieu.dit.
MAIN_CITY_NAME : la commune sur laquelle se situe le site se trouve dans la colonne Name…Title.
BIBLIOGRAPHY : la bibliographie se rapportant à l’objet se trouve dans la colonne rec_Title.1.
# Renommer les colonnes déjà existantes
colnames(n_objet)[c(4:6, 10)] <- colnames(arkeoGIS[c(1:3, 20)])
Unique.public.identifier | catégorie.objet | Materiaux | SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | Mappable.location..geospatial. | rec_Title | Name...Title.1 | BIBLIOGRAPHY |
---|---|---|---|---|---|---|---|---|---|
APP0001 | harnais | Alliage cuivreux | SIT0092 | Augusta Raurica | Augst | POINT(7.71468 47.53557) | harnais - Artefacts APH-4000, Bishop 1988 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | Artefacts APH-4068|Deschler-Erb 1999, n° 386 |
APP0010 | harnais | Alliage cuivreux | SIT0575 | Rheingönheim | Ludwigshafen am Rhein | POINT(8.41944 49.44514) | harnais - Artefacts APH-4000, Bishop 1988 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | Bishop 1992, fig. 15, n°1-2|Artefacts APH-4068|Ulbert 1969, Pl.28 n°4 |
APP0100 | harnais | Alliage cuivreux | SIT0091 | Vindonissa | Windisch an der Aare | POINT(8.21842 47.47899) | harnais - Artefacts APH-4000, Bishop 1988 | 100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Unz, Deschler-Erb 1997, pl. 63, n° 1812|Artefacts APH-4051 |
3.2 Les colonnes à créer sans manipulations
Afin de correspondre à la structure des données ArkeoGIS, certaines colonnes et leur données doivent être ajoutées car elles ne sont pas encore présentes dans le jeu de données.
- La colonne GEONAME_ID est utilisée pour récupérer les coordonnées de sites pour lesquels l’information ne serait pas indiquée dans le jeu de données, ce qui n’est pas le cas ici. Cette colonne doit donc être ajoutée, mais sans nouvelles données.
La colonne ALTITUDE reprend une information qui n’est pas disponible dans ce jeu de données.
La colonne PROJECTION_SYSTEM indique le système de projection dans lequel les coordonnées sont indiquées, à l’aide de son code EPSG. Ici, il s’agit du système WGS84 dont le code est 4326.
La colonne CARAC_NAME précise dans ArkeoGIS à quelle partie du thésaurus la ligne décrite fait référence (Immobilier, Mobilier, Production, Paysage, Analyses). Dans les données utilisées on ne trouve que du mobilier.
La colonne CARAC_EXP indique si l’élément décrit est exceptionnel ou non.
La colonne WEB_IMAGES indique un lien vers une ou des url permettant l’accès à des illustrations au format jpg, png ou gif.
# Créer les colonnes à ajouter et leur contenu
colnames(arkeoGIS[c(4,8)])] <- NA
n_objet[, colnames(arkeoGIS[5])] <- "4326"
n_objet[, colnames(arkeoGIS[14])] <- "Mobilier"
n_objet[, colnames(arkeoGIS[19])] <- "Non"
n_objet[, colnames(arkeoGIS[22])] <- NA n_objet[,
Unique.public.identifier | catégorie.objet | Materiaux | SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | Mappable.location..geospatial. | rec_Title | Name...Title.1 | BIBLIOGRAPHY | GEONAME_ID | ALTITUDE | PROJECTION_SYSTEM | CARAC_NAME | CARAC_EXP | WEB_IMAGES |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
APP0001 | harnais | Alliage cuivreux | SIT0092 | Augusta Raurica | Augst | POINT(7.71468 47.53557) | harnais - Artefacts APH-4000, Bishop 1988 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | Artefacts APH-4068|Deschler-Erb 1999, n° 386 | NA | NA | 4326 | Mobilier | Non | NA |
APP0010 | harnais | Alliage cuivreux | SIT0575 | Rheingönheim | Ludwigshafen am Rhein | POINT(8.41944 49.44514) | harnais - Artefacts APH-4000, Bishop 1988 | 0 : 25 apr|25 : 50 apr|50 : 75 apr | Bishop 1992, fig. 15, n°1-2|Artefacts APH-4068|Ulbert 1969, Pl.28 n°4 | NA | NA | 4326 | Mobilier | Non | NA |
APP0100 | harnais | Alliage cuivreux | SIT0091 | Vindonissa | Windisch an der Aare | POINT(8.21842 47.47899) | harnais - Artefacts APH-4000, Bishop 1988 | 100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Unz, Deschler-Erb 1997, pl. 63, n° 1812|Artefacts APH-4051 | NA | NA | 4326 | Mobilier | Non | NA |
3.3 Les colonnes en fonction d’une autre table
On trouve dans la table sites les informations pour compléter les données des colonnes ArkeoGIS CITY_CENTROID, OCCUPATION, STATE_OF_KNOWLEDGE qui sont relative au site de découverte et non à l’objet en lui même. Pour ce faire, il faut fusionner la table objets et la table sites en fonction de l’identifiant unique des sites, ce qui va permettre de répéter les informations pour chaque objet mis au jour sur un même site. Cependant, avant de pouvoir fusionner les deux jeux de données, les deux colonnes contenant l’identifiant unique du site, et permettant le lien, doivent être nommées de la même manière.
# Renommer la colonne ID_Site dans la table `sites`
colnames(sites)[1] <- "SITE_SOURCE_ID"
# Fusionner les jeux de données
<- droplevels(merge(sites[,1:4], n_objet, by = "SITE_SOURCE_ID"))
n_objet
# Renommer les colonnes pour ArkeoGIS
colnames(n_objet)[2:4] <- colnames(arkeoGIS[c(9, 11, 10)])
SITE_SOURCE_ID | CITY_CENTROID | STATE_OF_KNOWLEDGE | OCCUPATION | Unique.public.identifier | catégorie.objet | Materiaux | SITE_NAME | MAIN_CITY_NAME | Mappable.location..geospatial. | rec_Title | Name...Title.1 | BIBLIOGRAPHY | GEONAME_ID | ALTITUDE | PROJECTION_SYSTEM | CARAC_NAME | CARAC_EXP | WEB_IMAGES |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0001 | VRAI | Fouillé | Non renseigné | FIB2747 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | POINT(7.16444 49.86499) | fibule - Gaspar 2007 type 37a|fibule - Feugère 1985 type 26b1|fibule - Riha 1994 type 5.17.3 | 25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Haffner 1971, 20-21, Taf. 14|Artefacts FIB-4518 | NA | NA | 4326 | Mobilier | Non | NA |
SIT0001 | VRAI | Fouillé | Non renseigné | PER1594 | perle | Verre | Wederath-Belginum | Wederath | POINT(7.16444 49.86499) | perle - Riha 1990 type 11.1.1 | 25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Cordie-Hackenberg, Haffner 1997, Taf. 417, j|Artefacts PRL-4001 | NA | NA | 4326 | Mobilier | Non | NA |
SIT0001 | VRAI | Fouillé | Non renseigné | FIB2751 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | POINT(7.16444 49.86499) | fibule - Gaspar 2007 type 50|fibule - Feugère 1985 type 26c2|fibule - Riha 1994 type 7.16 | 50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr | Artefacts FIB-4726|Cordie-Hackenberg, Haffner 1997, pl. 618, k | NA | NA | 4326 | Mobilier | Non | NA |
Les trois colonnes importées sont définies par des champs prédéfinis fixes dans le manuel d’ArkeoGIS. Il est donc nécessaire de vérifier qu’elles y correspondent bien, et le cas échéant de les modifier en conséquence.
- La colonne CITY_CENTROID fonctionne selon un système oui-non. Toutefois, l’import dans R a changé ces valeurs en TRUE-FALSE.
# Changer les valeurs de la colonne CITY_CENTROID
$CITY_CENTROID <- factor(n_objet$CITY_CENTROID)
n_objetlevels(n_objet$CITY_CENTROID) <- c("Non", "Oui")
Table 7: Contenu de la colonne CITY_CENTROID
Var1 | Freq |
---|---|
FAUX | 11472 |
VRAI | 18980 |
Var1 | Freq |
---|---|
Non | 11472 |
Oui | 18980 |
Les valeurs de cette colonne peuvent être corrélées à l’utilisation de geonames dans la colonne GEONAME_ID, afin de définir les coordonnées d’un site. Dans l’exemple utilisé ici aucun geonames n’est utilisé, cependant un certain nombre de site sont localisés par des coordonnées non précises et cette information est notifiée dans cette colonne.
- La colonne STATE_OF_KNOWLEDGE n’accepte qu’un certain nombre d’entrées spécifiques et ne prend pas en compte les cellules vides. Il est donc nécessaire de remplacer ces dernières par la mention Non renseigné. Il faut aussi homogénéiser les entrées pour Prospecté pédestre, que l’on trouve écrit de trois façons différentes. L’utilisation d’une expression régulière nous permet de faire cette modification en une seule ligne.
# Remplacer les cellules vides par la mention "Non renseigné"
$STATE_OF_KNOWLEDGE[n_objet$STATE_OF_KNOWLEDGE == ""] <- "Non renseigné"
n_objet
# Homogénéiser la mention "Prospecté pédestre"
$STATE_OF_KNOWLEDGE <- sub("^Prospect.+$", "Prospecté pédestre", n_objet$STATE_OF_KNOWLEDGE) n_objet
Table 8: Contenu de la colonne STATE_OF_KNOWLEDGE
Var1 | Freq |
---|---|
27 | |
Fouillé | 7833 |
Littérature | 104 |
Non renseigné | 21661 |
Prospecté | 91 |
Prospecté pédestre | 511 |
Prospection pédestre | 4 |
Sondé | 221 |
Var1 | Freq |
---|---|
Fouillé | 7833 |
Littérature | 104 |
Non renseigné | 21688 |
Prospecté pédestre | 606 |
Sondé | 221 |
- La colonne OCCUPATION est, elle aussi, structurée par un certain nombre d’entrées prédéfinies. Ici, il est seulement nécessaire de remplacer les lignes vides par la mention Non renseigné.
# Remplacer les cellules vides par la mention "Non renseigné"
$OCCUPATION[n_objet$OCCUPATION == ""] <- "Non renseigné" n_objet
Table 9: Contenu de la colonne OCCUPATION
Var1 | Freq |
---|---|
27 | |
Continue | 1332 |
Multiple | 2 |
Non renseigné | 27135 |
Unique | 1956 |
Var1 | Freq |
---|---|
Continue | 1332 |
Multiple | 2 |
Non renseigné | 27162 |
Unique | 1956 |
3.4 Les colonnes à créer d’après les données d’autres colonnes
Pour certaines colonnes les informations nécessaires à l’import dans ArkeoGIS sont déjà présentes dans la table, mais ne sont pas aux bons formats ou sont mélangées à d’autres élements. Il est donc nécessaire de les récupérer, de les modifier et de les intégrer au sein des bonnes colonnnes.
3.4.1 Les coordonnées
C’est le cas en particulier ici des coordonnées des sites. Ces informations sont indiquées dans la colonne Mappable.location..geospatial. sous la forme de données géospatialisées (Table 10 les longitudes et latitudes sont rassemblées dans la même colonne). Il faut les séparer et les insérer dans deux colonnes différentes.
x |
---|
POINT(7.16444 49.86499) |
POINT(7.16444 49.86499) |
POINT(7.16444 49.86499) |
POINT(7.16444 49.86499) |
POINT(7.16444 49.86499) |
POINT(7.16444 49.86499) |
# Créer une table pour stocker les coordonnées
<- data.frame(LONGITUDE = numeric(), LATITUDE = numeric())
coord
# Récupérer les coordonnés à l'aide d'une expression régulière et les stocker dans la table `coord`
<- strcapture("POINT\\((\\d+\\.\\d+)\\s(\\d+\\.\\d+)\\)", n_objet$Mappable.location..geospatial., coord)
coord summary(coord)
LONGITUDE LATITUDE
Min. :4.920 Min. :46.23
1st Qu.:6.173 1st Qu.:47.54
Median :6.956 Median :48.31
Mean :6.966 Mean :48.45
3rd Qu.:7.715 3rd Qu.:49.19
Max. :9.028 Max. :50.44
NA's :8 NA's :8
# Rassembler la table `objets` et la table `coord` (Cette opération
# fonctionne parce que l'ordre des rangs n'a pas été modifié)
# Puis supprimer la colonne Mappable.location..geospatial.
<- cbind(n_objet, coord)
n_objet <- n_objet[,-10] n_objet
SITE_SOURCE_ID | CITY_CENTROID | STATE_OF_KNOWLEDGE | OCCUPATION | Unique.public.identifier | catégorie.objet | Materiaux | SITE_NAME | MAIN_CITY_NAME | rec_Title | Name...Title.1 | BIBLIOGRAPHY | GEONAME_ID | ALTITUDE | PROJECTION_SYSTEM | CARAC_NAME | CARAC_EXP | WEB_IMAGES | LONGITUDE | LATITUDE |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0001 | Oui | Fouillé | Non renseigné | FIB2747 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | fibule - Gaspar 2007 type 37a|fibule - Feugère 1985 type 26b1|fibule - Riha 1994 type 5.17.3 | 25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Haffner 1971, 20-21, Taf. 14|Artefacts FIB-4518 | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 |
SIT0001 | Oui | Fouillé | Non renseigné | PER1594 | perle | Verre | Wederath-Belginum | Wederath | perle - Riha 1990 type 11.1.1 | 25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr | Cordie-Hackenberg, Haffner 1997, Taf. 417, j|Artefacts PRL-4001 | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 |
SIT0001 | Oui | Fouillé | Non renseigné | FIB2751 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | fibule - Gaspar 2007 type 50|fibule - Feugère 1985 type 26c2|fibule - Riha 1994 type 7.16 | 50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr | Artefacts FIB-4726|Cordie-Hackenberg, Haffner 1997, pl. 618, k | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 |
3.4.2 Les dates
Les informations de datation se trouvent, dans la table objets, regroupées par phase d’existence de l’objet, au sein d’une unique colonne Name…Title.1 (Table 12). Il est donc nécessaire de les séparer en récupérant la première phase pour la colonne STARTING_PERIOD et la dernière pour la colonne ENDING_PERIOD. Cependant, certaines lignes ne possèdent qu’une seule période d’existence, représentant à la fois la date de début et de fin, ce qui nécessite des manipulations supplémentaires. Par ailleurs, certaines lignes étant réellement vides, il n’est pas possible de simplement remplacer les données manquantes de la première application de la fonction strcapture
par celles de la seconde.
x |
---|
25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr |
25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr |
50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr |
25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr |
25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr |
25 : 50 apr|50 : 75 apr|75 : 100 apr|100 : 150 apr|150 : 200 apr|200 : 250 apr|250 : 300 apr |
# Récupérer les dates de début et de fin`à l'aide d'une expression régulière
# et les stocker dans des colonnes séparées
<- data.frame(STARTING_PERIOD = character(), ENDING_PERIOD = character())
date <- strcapture(
date "^(\\d+\\s:\\s\\d+\\s\\w+)\\s?\\w+?\\|?.*\\|(\\d+\\s:\\s\\d+\\s\\w+)\\s?\\w+?$",
11], date)
n_objet[,
# Récupérer les dates uniques
<- data.frame(STARTING_PERIOD = character())
date2 <- strcapture("^(\\d+\\s:\\s\\d+\\s\\w+)\\s?\\w+?$", n_objet[,11], date2)
date2
# Dupliquer la colonne pour avoir une date de fin
$ENDING_PERIOD <- date2$STARTING_PERIOD
date2
# Ajouter un identifiant unique identique aux deux tables
# cela fonctionne puisque les données manquantes sont indiquées
# par des NAs et que l'ordre des données est conservé
$ID <- paste0("ID", 1:nrow(date))
date$ID <- paste0("ID", 1:nrow(date2))
date2
# Joindre les deux tables en remplaçant les données manquantes de la table
# `date` par les données de la table `date2`
<- dplyr::left_join(date, date2, by = "ID") %>%
date3 ## Cette opération crée des nouvelles colonnes STARTING_PERIOD et ENDING_PERIOD
## x et y
# Remplacer les NAs par les données disponibles dans les colonnes y
::mutate(STARTING_PERIOD = ifelse(is.na(STARTING_PERIOD.x),
dplyr%>%
STARTING_PERIOD.y, STARTING_PERIOD.x)) ::mutate(ENDING_PERIOD = ifelse(is.na(ENDING_PERIOD.x),
dplyr%>%
ENDING_PERIOD.y, ENDING_PERIOD.x))
# Supprimer les colonnes en trop
::select(-STARTING_PERIOD.y, -STARTING_PERIOD.x) %>%
dplyr::select(-ENDING_PERIOD.y, -ENDING_PERIOD.x) %>%
dplyr
# Et remplacer les NA restant par la mention "indéterminé"
replace(is.na(.), "Indéterminé")
# Supprimer la colonne ID
<- date3[,-1] date3
STARTING_PERIOD | ENDING_PERIOD |
---|---|
25 : 50 ap | 250 : 300 ap |
25 : 50 ap | 250 : 300 ap |
50 : 75 ap | 150 : 200 ap |
25 : 50 ap | 250 : 300 ap |
25 : 50 ap | 250 : 300 ap |
25 : 50 ap | 250 : 300 ap |
Il faut aussi transformer ces dates au format ArkeoGIS en supprimant les mention apr ou ap et en remplaçant les mentions av par un symbole -. Enfin, les données manquantes doivent indiquer l’information Indéterminé.
# Remplacer les mention "av" ou "apr" de la colonne STARTING_PERIOD
$STARTING_PERIOD <- gsub("(\\d+)\\s:\\s(\\d+)\\sap.*", "\\1:\\2",
date3$STARTING_PERIOD)
date3$STARTING_PERIOD <- gsub("(\\d+)\\s:\\s(\\d+)\\sa.*", "-\\1:-\\2",
date3$STARTING_PERIOD)
date3
# Remplacer les mention "av" ou "apr" de la colonne ENDING_PERIOD
$ENDING_PERIOD <- gsub("(\\d+)\\s:\\s(\\d+)\\sap.*", "\\1:\\2",
date3$ENDING_PERIOD)
date3$ENDING_PERIOD <- gsub("(\\d+)\\s:\\s(\\d+)\\sa.*", "-\\1:-\\2",
date3$ENDING_PERIOD) date3
Table 14: Les différentes datations possibles après modification
Var1 | Freq |
---|---|
-125:-75 | 1238 |
-150:-125 | 13505 |
-175:-150 | 10 |
-200:-175 | 283 |
-225:-200 | 205 |
-25:-0 | 1497 |
-260:-225 | 293 |
-50:-25 | 192 |
-75:-50 | 227 |
0:25 | 3871 |
100:150 | 646 |
150:200 | 656 |
200:250 | 1157 |
25:50 | 1859 |
250:300 | 1056 |
300:350 | 1674 |
350:400 | 781 |
50:75 | 1033 |
75:100 | 261 |
Indéterminé | 8 |
Var1 | Freq |
---|---|
-125:-75 | 524 |
-150:-125 | 236 |
-175:-150 | 365 |
-200:-175 | 5 |
-225:-200 | 37 |
-25:-0 | 274 |
-260:-225 | 10 |
-50:-25 | 13541 |
-75:-50 | 183 |
0:25 | 141 |
100:150 | 1475 |
150:200 | 916 |
200:250 | 975 |
25:50 | 398 |
250:300 | 2906 |
300:350 | 1438 |
350:400 | 3663 |
50:75 | 570 |
75:100 | 2787 |
Indéterminé | 8 |
Les datations sont désormais prêtes à être intégrées à la table objets. Toutefois, il est aussi possible de les modifier à nouveau pour les faire correspondre à la chronologie de l’Europe continentale employée dans ArkeoGIS1. Pour celles avant J.-C., les dates de ce travail sont fondées sur cette même chronologie (Barral et Fichtl (2012)), mais diffèrent d’ArkeoGIS à un an près (voir Table 15). Pour les dates apr. J.-C., le système employé dans les données sources correspond au calendrier Grégorien, mais peut en partie être relié la chronologie d’ArkeoGIS en modifiant également les bornes d’un an.
IdArkeogis | PERIOD_NAME_LVL1 | START_LVL1 | STOP_LVL1 | PERIOD_NAME_LVL2 | START_LVL2 | STOP_LVL2 | PERIOD_NAME_LVL3 | START_LVL3 | STOP_LVL3 | PERIOD_NAME_LVL4 | START_LVL4 | STOP_LVL4 | IdArkPeriodo | IdArkPactols | X | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
38 | 2160 | NA | NA | La Tène A | -480 | -381 | NA | NA | NA | NA | http://n2t.net/ark:/99152/p09hq4ntk3v | https://ark.frantiq.fr/ark:/26678/pcrtbm5GVtzrbP | ||||
39 | 2161 | NA | NA | NA | NA | La Tène A1 | -480 | -421 | NA | NA | http://n2t.net/ark:/99152/p09hq4nndw9 | |||||
40 | 2162 | NA | NA | NA | NA | NA | NA | La Tène A1a | -480 | -451 | http://n2t.net/ark:/99152/p09hq4n7gkg | |||||
41 | 2163 | NA | NA | NA | NA | NA | NA | La Tène A1b | -450 | -421 | http://n2t.net/ark:/99152/p09hq4n43g3 | |||||
42 | 2164 | NA | NA | NA | NA | La Tène A2 | -420 | -381 | NA | NA | http://n2t.net/ark:/99152/p09hq4n54cn | |||||
43 | 2165 | NA | NA | La Tène B | -380 | -261 | NA | NA | NA | NA | http://n2t.net/ark:/99152/p09hq4nj4h9 | https://ark.frantiq.fr/ark:/26678/pcrtpz5a27rtgG |
# Modifier les dates pour correspondre à la chronologie utilisée dans ArkeoGIS
for (i in 1:ncol(date3)) {
<- as.factor(date3[,i])
date3[,i]
levels(date3[,i]) <- c("-125:-76", "-150:-126", "-175:-151", "-200:-176", "-225:-201",
"-25:-1", "-260:-226", "-50:-26", "-75:-51", "1:25", "101:150",
"151:200", "201:250", "26:50", "251:300", "301:350", "351:400",
"51:75", "76:100", "Indéterminé")
}
# Rassembler la table `objets` et la table `date3` (cette opération
# fonctionne parce que l'ordre des rangs n'a pas été modifié)
# Puis supprimer la colonne Name...Title.1
<- cbind(n_objet, date3)
n_objet <- n_objet[,-11] n_objet
Table 16: Modifier et ajouter les dates au jeu de données
STARTING_PERIOD | ENDING_PERIOD | |
---|---|---|
15 | -75:-51 | -50:-26 |
16 | -75:-51 | -50:-26 |
17 | -125:-76 | -75:-51 |
18 | -75:-51 | -50:-26 |
19 | 26:50 | 251:300 |
20 | -25:-1 | -25:-1 |
SITE_SOURCE_ID | CITY_CENTROID | STATE_OF_KNOWLEDGE | OCCUPATION | Unique.public.identifier | catégorie.objet | Materiaux | SITE_NAME | MAIN_CITY_NAME | rec_Title | BIBLIOGRAPHY | GEONAME_ID | ALTITUDE | PROJECTION_SYSTEM | CARAC_NAME | CARAC_EXP | WEB_IMAGES | LONGITUDE | LATITUDE | STARTING_PERIOD | ENDING_PERIOD |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0001 | Oui | Fouillé | Non renseigné | FIB2747 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | fibule - Gaspar 2007 type 37a|fibule - Feugère 1985 type 26b1|fibule - Riha 1994 type 5.17.3 | Haffner 1971, 20-21, Taf. 14|Artefacts FIB-4518 | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 | 26:50 | 251:300 |
SIT0001 | Oui | Fouillé | Non renseigné | PER1594 | perle | Verre | Wederath-Belginum | Wederath | perle - Riha 1990 type 11.1.1 | Cordie-Hackenberg, Haffner 1997, Taf. 417, j|Artefacts PRL-4001 | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 | 26:50 | 251:300 |
SIT0001 | Oui | Fouillé | Non renseigné | FIB2751 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | fibule - Gaspar 2007 type 50|fibule - Feugère 1985 type 26c2|fibule - Riha 1994 type 7.16 | Artefacts FIB-4726|Cordie-Hackenberg, Haffner 1997, pl. 618, k | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 | 51:75 | 151:200 |
3.4.3 Les commentaires
La colonne commentaire n’existe pas encore dans la table objets. Elle est créée en fonction des informations contenues dans d’autres colonnes et en particulier catégorie.objet, Materiaux, rec_Title. Par ailleurs, dans cette dernière colonne qui correspond à la typologie des objets, certaines informations sont redondantes et il faut la nettoyer avant de pouvoir concatener l’ensemble des informations.
# Nettoyer la colonne `rec_Title`
10] <- gsub("\\w+\\s-\\s", "", n_objet[,10])
n_objet[,10] <- gsub("\\|", ", ", n_objet[,10]) n_objet[,
Table 17: Contenu de la colonne rec_Title
x |
---|
fibule - Gaspar 2007 type 37a|fibule - Feugère 1985 type 26b1|fibule - Riha 1994 type 5.17.3 |
perle - Riha 1990 type 11.1.1 |
fibule - Gaspar 2007 type 50|fibule - Feugère 1985 type 26c2|fibule - Riha 1994 type 7.16 |
fibule - Gaspar 2007 type 37a|fibule - Feugère 1985 type 26b1|fibule - Riha 1994 type 5.17.3 |
perle - Riha 1990 type 11.1.1 |
perle - Riha 1990 type 11.1.1 |
x |
---|
Gaspar 2007 type 37a, Feugère 1985 type 26b1, Riha 1994 type 5.17.3 |
Riha 1990 type 11.1.1 |
Gaspar 2007 type 50, Feugère 1985 type 26c2, Riha 1994 type 7.16 |
Gaspar 2007 type 37a, Feugère 1985 type 26b1, Riha 1994 type 5.17.3 |
Riha 1990 type 11.1.1 |
Riha 1990 type 11.1.1 |
# Assembler les différentes colonnes dans une nouvelle colonne COMMENTS
# en précisant la fonction de chaque élément
$COMMENTS <- paste0("OBJET : ", n_objet$catégorie.objet,
n_objet". MATERIAU : ", n_objet$Materiaux,
". TYPO : ", n_objet$rec_Title, ".")
x |
---|
OBJET : fibule. MATERIAU : Alliage cuivreux. TYPO : Gaspar 2007 type 37a, Feugère 1985 type 26b1, Riha 1994 type 5.17.3. |
OBJET : perle. MATERIAU : Verre. TYPO : Riha 1990 type 11.1.1. |
OBJET : fibule. MATERIAU : Alliage cuivreux. TYPO : Gaspar 2007 type 50, Feugère 1985 type 26c2, Riha 1994 type 7.16. |
OBJET : fibule. MATERIAU : Alliage cuivreux. TYPO : Gaspar 2007 type 37a, Feugère 1985 type 26b1, Riha 1994 type 5.17.3. |
OBJET : perle. MATERIAU : Verre. TYPO : Riha 1990 type 11.1.1. |
OBJET : perle. MATERIAU : Verre. TYPO : Riha 1990 type 11.1.1. |
Les colonnes utilisées pour créer les commentaires ne sont pas supprimées tout de suite, puisqu’elles nous serviront pour créer les caractérisation des objets. Seule la colonne contenant la typologie ne sera plus utile.
<- n_objet[,-10] n_objet
SITE_SOURCE_ID | CITY_CENTROID | STATE_OF_KNOWLEDGE | OCCUPATION | Unique.public.identifier | catégorie.objet | Materiaux | SITE_NAME | MAIN_CITY_NAME | BIBLIOGRAPHY | GEONAME_ID | ALTITUDE | PROJECTION_SYSTEM | CARAC_NAME | CARAC_EXP | WEB_IMAGES | LONGITUDE | LATITUDE | STARTING_PERIOD | ENDING_PERIOD | COMMENTS |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0001 | Oui | Fouillé | Non renseigné | FIB2747 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | Haffner 1971, 20-21, Taf. 14|Artefacts FIB-4518 | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 | 26:50 | 251:300 | OBJET : fibule. MATERIAU : Alliage cuivreux. TYPO : Gaspar 2007 type 37a, Feugère 1985 type 26b1, Riha 1994 type 5.17.3. |
SIT0001 | Oui | Fouillé | Non renseigné | PER1594 | perle | Verre | Wederath-Belginum | Wederath | Cordie-Hackenberg, Haffner 1997, Taf. 417, j|Artefacts PRL-4001 | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 | 26:50 | 251:300 | OBJET : perle. MATERIAU : Verre. TYPO : Riha 1990 type 11.1.1. |
SIT0001 | Oui | Fouillé | Non renseigné | FIB2751 | fibule | Alliage cuivreux | Wederath-Belginum | Wederath | Artefacts FIB-4726|Cordie-Hackenberg, Haffner 1997, pl. 618, k | NA | NA | 4326 | Mobilier | Non | NA | 7.16444 | 49.86499 | 51:75 | 151:200 | OBJET : fibule. MATERIAU : Alliage cuivreux. TYPO : Gaspar 2007 type 50, Feugère 1985 type 26c2, Riha 1994 type 7.16. |
3.4.4 La bilbiographie
La colonne BIBLIOGRAPHY a déjà été renommée lors d’une étape précédente (voir Section 3.1). Elle nécessite toutefois, une légère mise en forme et l’ajout de la référence correspondant à la base source.
# Nettoyer la colonne BIBLIOGRAPHY
10] <- gsub("\\|", ", ", n_objet[,10])
n_objet[,
# Ajouter la référence de la base source
10] <- paste0("Scholtus 2021, ", n_objet$Unique.public.identifier, ", ", n_objet[,10]) n_objet[,
Table 20: Mettre en forme les informations bibliographiques
x |
---|
Haffner 1971, 20-21, Taf. 14|Artefacts FIB-4518 |
Cordie-Hackenberg, Haffner 1997, Taf. 417, j|Artefacts PRL-4001 |
Artefacts FIB-4726|Cordie-Hackenberg, Haffner 1997, pl. 618, k |
Haffner 1971, 20-21, Taf. 14|Artefacts FIB-4518 |
Cordie-Hackenberg, Haffner 1997, Taf. 532|Artefacts PRL-4001 |
Artefacts PRL-4001 |
x |
---|
Scholtus 2021, FIB2747, Haffner 1971, 20-21, Taf. 14, Artefacts FIB-4518 |
Scholtus 2021, PER1594, Cordie-Hackenberg, Haffner 1997, Taf. 417, j, Artefacts PRL-4001 |
Scholtus 2021, FIB2751, Artefacts FIB-4726, Cordie-Hackenberg, Haffner 1997, pl. 618, k |
Scholtus 2021, FIB2748, Haffner 1971, 20-21, Taf. 14, Artefacts FIB-4518 |
Scholtus 2021, PER1600, Cordie-Hackenberg, Haffner 1997, Taf. 532, Artefacts PRL-4001 |
Scholtus 2021, PER1597, Artefacts PRL-4001 |
3.5 Créer les colonnes de description des objets
Dans la structure d’ArkeoGIS, les mobiliers sont définis par un système de thésaurus stricte avec quatre niveaux de précision (Table 21). Ce thésaurus est accessible dans le manuel en ligne ou en le téléchargeant.
En ce qui concerne le mobilier, qui correspond à l’ensemble des données de cette base source, les niveaux précisent d’abord le matériau de l’objet, puis sa catégorie et enfin son identification. Ainsi, il est possible d’utiliser les colonnes catégorie.objet et Materiaux pour corréler les deux tables. Il est cependant nécessaire de faire encore un nettoyage de données pour que cela fonctionne.
<- read.csv2("data/Mobilier.csv", sep = ";", encoding = "UTF-8") mobilier
IDArkeoGIS | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | IdArk | IdPactols | IdAat |
---|---|---|---|---|---|---|---|---|
208 | Mobilier | Os | http://ark.frantiq.fr/ark:/26678/pcrtpy5s63Sdhx | 15222 | ||||
209 | Mobilier | Os | Ossements humains | http://ark.frantiq.fr/ark:/26678/pcrtf0jhaoDXkJ | 16033 | |||
210 | Mobilier | Os | Ossements humains | Tabletterie | https://ark.frantiq.fr/ark:/26678/pcrtEaFZFvpInN | 17206 | ||
211 | Mobilier | Os | Ossements humains | Outils | https://ark.frantiq.fr/ark:/26678/pcrtxs8Kml8jLw | 16050 | http://vocab.getty.edu/page/aat/300024841 | |
212 | Mobilier | Os | Ossements humains | Parure | https://ark.frantiq.fr/ark:/26678/pcrtNBrnOdttU9 | 16131 | http://vocab.getty.edu/page/aat/300261068 | |
213 | Mobilier | Os | Ossements humains | Autres | NA |
3.5.1 La CARAC_LVL1
La première étape consiste à modifier la colonne Materiaux pour la faire correspondre aux entrées existant dans la colonne CARAC_LVL1.
# Créer la colonne CARAC_LVL1 en fonction des matériaux
colnames(arkeoGIS[15])] <- n_objet$Materiaux
n_objet[
# Modifier les données pour correspondre au thésaurus
22] <- gsub("Alliage.*|Argent|Fer|Laiton|Bronze|Electrum|Plomb|Or|Potin",
n_objet[,"Métal", n_objet[,22])
22] <- gsub("Agate|Ambre|Pierre|Cornaline|Cristal de roche|Jais",
n_objet[,"Lithique", n_objet[,22])
## Pour supprimer les multiples matériaux et ne conserver que le premier
22] <- gsub("^(\\w+)\\|.*", "\\1", n_objet[,22])
n_objet[,
22] <- gsub("Bois de cerf|Ivoire", "Os", n_objet[,22]) n_objet[,
Table 22: Contenu de la colonne Materiaux
Var1 | Freq |
---|---|
5264 | |
Agate | 24 |
Alliage au plomb | 1 |
Alliage cuivreux | 7434 |
Alliage cuivreux|Fer | 1 |
Alliage cuivreux|Or | 2 |
Alliage cuivreux|Os | 3 |
Alliage cuivreux|Pierre | 2 |
Alliage cuivreux|Sardonyx | 1 |
Alliage cuivreux|Verre | 3 |
Ambre | 9 |
Argent | 4202 |
Argent|Pierre | 1 |
Bois de cerf | 26 |
Bronze | 3977 |
Céramique | 388 |
Cornaline | 2 |
Cristal de roche | 1 |
Electrum | 1 |
Fer | 161 |
Fer|Pierre | 2 |
Fer|Verre | 2 |
Inconnu | 3 |
Ivoire | 6 |
Jais | 3 |
Laiton | 2 |
Métal | 3 |
Or | 685 |
Os | 1624 |
Os|Bronze|Fer | 1 |
Plomb | 2 |
Potin | 3864 |
Verre | 2752 |
Var1 | Freq |
---|---|
5264 | |
Céramique | 388 |
Inconnu | 3 |
Lithique | 39 |
Métal | 20349 |
Os | 1657 |
Verre | 2752 |
On constate cependant que le matériau manque pour un nombre assez important d’objets. Puisqu’il s’agit du premier niveau d’ArkeoGIS, il n’est pas possible d’ignorer cet élément et il est donc nécessaire d’essayer de récupérer cette information.
Var1 | Freq |
---|---|
bague | 1 |
bracelet | 25 |
Épée | 166 |
épingle | 1 |
fibule | 11 |
monnaie | 4860 |
perle | 200 |
# Attribuer un matériaux selon la catégorie d'objet, lorsqu'il est manquant
$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "Épée"] <- "Métal"
n_objet$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "monnaie"] <- "Métal"
n_objet$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "fibule"] <- "Métal"
n_objet$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "épingle"] <- "Métal"
n_objet
$CARAC_LVL1[n_objet$Materiaux == "Inconnu" & n_objet$catégorie.objet == "fibule"] <- "Métal"
n_objet
$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "bague"] <- "Verre"
n_objet$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "perle"] <- "Verre"
n_objet$CARAC_LVL1[n_objet$Materiaux == "" & n_objet$catégorie.objet == "bracelet"] <- "Verre" n_objet
Var1 | Freq |
---|---|
Céramique | 388 |
Lithique | 39 |
Métal | 25390 |
Os | 1657 |
Verre | 2978 |
3.5.2 Les CARAC_LVL2, 3 et 4
Puisque nous avons maintenant défini correctement la colonne CARAC_LVL1, nous allons pouvoir nous servir de celle-ci et de la colonne Unique.public.identifier pour compléter les niveaux 2, 3 et 4 de caractérisation. Pour ce faire, la Table 25 nous permet de retrouver les différentes associations de catégories et de matériaux puis de les rechercher dans le thésaurus d’ArkeoGIS pour les importer aux lignes correspondantes.
Toutefois, toutes les associations n’existent pas dans le thésaurus. Ainsi, s’il est effectivement possible de trouver une caractérisation décrivant des bagues en métal, celles en os seront renseignées sous le terme Parure. Pour cette raison, il est nécessaire de procéder en plusieurs étapes pour récupérer les lignes du thésaurus correspondant aux différentes associations possibles. Il sera ensuite possible d’utiliser la fonction merge
pour rassembler les jeux de données.
Céramique | Lithique | Métal | Os | Verre | |
---|---|---|---|---|---|
bague | 0 | 2 | 991 | 3 | 24 |
boucle d’oreille | 0 | 0 | 41 | 0 | 0 |
bouton | 0 | 0 | 121 | 32 | 0 |
bracelet | 0 | 0 | 335 | 0 | 1488 |
ceinture | 0 | 0 | 781 | 27 | 0 |
Épée | 0 | 0 | 218 | 32 | 0 |
épingle | 0 | 3 | 201 | 1512 | 0 |
fibule | 0 | 0 | 4851 | 0 | 0 |
harnais | 0 | 0 | 784 | 1 | 0 |
monnaie | 0 | 0 | 16980 | 0 | 0 |
pendentif | 0 | 2 | 47 | 41 | 2 |
perle | 388 | 32 | 40 | 9 | 1464 |
3.5.2.1 Pour les associations existantes
Une des difficultés réside dans le fait que la catégorie de l’objet n’est pas toujours renseignée dans le même niveau de caractérisation au sein du thésaurus. Un autre problème est la différence de casse entre le thésaurus, dans lequel chaque terme commence par une majuscule, et les données sources dans lesquelles il n’y en a pas toujours. Aussi, la catégorie Monnaie, qui est au singulier dans les données sources, se présente au pluriel dans ArkeoGIS. Les termes Harnais et Pendentif doivent être modifié par des synonymes pour correspondre parfaitement au thésaurus. Enfin, l’entrée Boucle d’oreille pose problème dans les données source à cause de la forme de l’apostrophe.
Le code ci-dessous, et l’utilisation ensuite d’une boucle for
permettent de rechercher cette catégorie dans l’ensemble des colonnes en fonction des matériaux possibles et de stocker les différentes lignes du thésaurus possibles dans un nouvel objet.
# Ajouter une majuscule au début de chaque terme catégorie dans les données source
$catégorie.objet <- stringr::str_to_sentence(n_objet$catégorie.objet)
n_objet
# Remplacer les termes problématiques
$catégorie.objet[n_objet$catégorie.objet == "Monnaie"] <- "Monnaies"
n_objet$catégorie.objet[n_objet$catégorie.objet == "Harnais"] <- "Harnachement"
n_objet$catégorie.objet[n_objet$catégorie.objet == "Pendentif"] <- "Pendeloque"
n_objet$catégorie.objet <- gsub("Boucle d.*", "Boucle d'oreille", n_objet$catégorie.objet)
n_objet
# Récupérer les occurrences uniques de chaque catégorie
<- unique(n_objet$catégorie.objet) catego
Table 26: Contenu de la colonne catégorie.objet
Var1 | Freq |
---|---|
bague | 1020 |
boucle d’oreille | 41 |
bouton | 153 |
bracelet | 1823 |
ceinture | 808 |
Épée | 250 |
épingle | 1716 |
fibule | 4851 |
harnais | 785 |
monnaie | 16980 |
pendentif | 92 |
perle | 1933 |
x |
---|
Fibule |
Perle |
Épée |
Harnachement |
Bracelet |
Pendeloque |
Monnaies |
Ceinture |
Bouton |
Bague |
Boucle d'oreille |
Épingle |
# Extraire les colonnes du thésaurus
## En fonction du matériau (materio)
## de la catégorie d'objet (catego)
## en recherchant cette dernière dans l'ensemble des colonnes
<- unique(n_objet$CARAC_LVL1)
materio <- mobilier[,3:6]
mobilier2
<- list()
IDS
for (m in 1:length(materio)) {
<- list()
IDS[[m]]
for (c in 1:length(catego)) {
<- list()
IDS[[m]][[c]]
for (i in 1:ncol(mobilier2)) {
<- mobilier2[mobilier2$CARAC_LVL1 == materio[[m]]
IDS[[m]][[c]][[i]] & mobilier2[,i] == catego[[c]],]
names(IDS[[m]])[[c]] <- catego[[c]]
<- rlist::list.clean(IDS[[m]][[c]],
IDS[[m]][[c]] function(x) length(x) == 0L, TRUE)
}
<- rlist::list.clean(IDS[[m]], function(x) length(x) == 0L, TRUE)
IDS[[m]]
}<- rlist::list.clean(IDS, function(x) length(x) == 0L, TRUE)
IDS
}
# Extraire les données des listes pour en faire une table
# La colonne `catégorie.objet` est créée afin de servir de clé de jointure pour la suite
for (i in 1:length(IDS)) {
for (t in 1:length(IDS[[i]])){
for (v in 1:length(IDS[[i]][[t]])) {
<- cbind(as.data.frame(IDS[[i]][[t]][[v]]),
IDS[[i]][[t]][[v]] .objet = names(IDS[[i]])[[t]])
catégorie
}<- as.data.frame(IDS[[i]][[t]])
IDS[[i]][[t]]
}<- Reduce(rbind, IDS[[i]])
IDS[[i]]
}
# Rassembler les différentes associations en un même jeu de données
<- Reduce(rbind, IDS) IDS
CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | catégorie.objet |
---|---|---|---|---|
Métal | Parure | Fibule | Fibule | |
Métal | Armement | Épée | Épée | |
Métal | Harnachement | Harnachement | ||
Métal | Harnachement | Mors | Harnachement | |
Métal | Harnachement | Passe-guides | Harnachement | |
Métal | Harnachement | Hipposandale | Harnachement | |
Métal | Harnachement | Char | Harnachement | |
Métal | Parure | Parure annulaire | Bracelet | Bracelet |
Métal | Parure | Pendeloque | Pendeloque | |
Métal | Monnaies | Monnaies | ||
Métal | Monnaies | Or | Monnaies | |
Métal | Monnaies | Argent | Monnaies | |
Métal | Monnaies | Bronze | Monnaies | |
Métal | Monnaies | Potin | Monnaies | |
Métal | Monnaies | Electrum | Monnaies | |
Métal | Monnaies | Monnaie fourrée | Monnaies | |
Métal | Monnaies | Fausse monnaie | Monnaies | |
Métal | Monnaies | Autres | Monnaies | |
Métal | Parure | Ceinture | Ceinture | |
Métal | Parure | Parure annulaire | Bague | Bague |
Métal | Parure | Boucle d'oreille | Boucle d'oreille | |
Métal | Parure | Épingle | Épingle | |
Verre | Parure | Perle | Perle | |
Verre | Parure | Bracelet | Bracelet | |
Lithique | Parure | Perle | Perle |
On remarque sur la Table 27 que pour les catégories Harnachement et Monnaies plusieurs entrées sont possibles. Si pour les monnaies, nous pourrons utiliser la colonne Materiaux pour préciser les monnaies du jeu de données source, pour les élément de harnachement il ne sera pas possible d’être plus précis et il faut donc supprimer les rangs supplémentaires.
# Supprimer les rangs avec des niveaux de précision trop important pour la catégorie "Harnachement"
== ""] <- NA
IDS[IDS <- IDS[IDS$CARAC_LVL2 == "Harnachement" & is.na(IDS$CARAC_LVL3) == TRUE
IDS | IDS$CARAC_LVL2 != "Harnachement",]
CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | catégorie.objet | |
---|---|---|---|---|---|
1 | Métal | Parure | Fibule | NA | Fibule |
2 | Métal | Armement | Épée | NA | Épée |
3 | Métal | Harnachement | NA | NA | Harnachement |
8 | Métal | Parure | Parure annulaire | Bracelet | Bracelet |
9 | Métal | Parure | Pendeloque | NA | Pendeloque |
10 | Métal | Monnaies | NA | NA | Monnaies |
11 | Métal | Monnaies | Or | NA | Monnaies |
12 | Métal | Monnaies | Argent | NA | Monnaies |
13 | Métal | Monnaies | Bronze | NA | Monnaies |
14 | Métal | Monnaies | Potin | NA | Monnaies |
15 | Métal | Monnaies | Electrum | NA | Monnaies |
16 | Métal | Monnaies | Monnaie fourrée | NA | Monnaies |
17 | Métal | Monnaies | Fausse monnaie | NA | Monnaies |
18 | Métal | Monnaies | Autres | NA | Monnaies |
19 | Métal | Parure | Ceinture | NA | Ceinture |
20 | Métal | Parure | Parure annulaire | Bague | Bague |
21 | Métal | Parure | Boucle d'oreille | NA | Boucle d'oreille |
22 | Métal | Parure | Épingle | NA | Épingle |
23 | Verre | Parure | Perle | NA | Perle |
24 | Verre | Parure | Bracelet | NA | Bracelet |
25 | Lithique | Parure | Perle | NA | Perle |
3.5.2.2 Pour les associations non existantes
Comme nous l’avons indiqué plus haut, certaines catégories d’objets ne sont pas directement représentées dans le thésaurus d’ArkeoGIS. Pour celles-ci, il est nécessaire de réduire le niveau de précision. On peut se reporter à nouveau au tableau Table 25 pour vérifier quelles sont les associations manquantes. Il apparaît qu’il s’agit essentiellement d’éléments de parure en matériau autre que le métal, ainsi que de quelques éléments en os qui pourront être renseignés par la mention Autres.
# Récupérer les différentes associations de catégories et de matériaux
<- as.data.frame(table(n_objet$catégorie.objet, n_objet$CARAC_LVL1))
categorie <- categorie[categorie$Freq != 0, 1:2]
categorie
# Indiquer un niveau moins important de description (Parure et Autres)
<- transform(
categorie Niv0 = ifelse(Var1 == "Fibule" | Var1 == "Perle" | Var1 == "Bague" | Var1 == "Boucle d'oreille" |
categorie, == "Bouton" | Var1 == "Bracelet" | Var1 == "Ceinture" | Var1 == "Épingle" | Var1 == "Pendeloque",
Var1 "Parure", "Autres")
)
# Supprimer les associations déjà trouvées précédemment
colnames(categorie)[1:2] <- colnames(IDS[c(5,1)])
<- droplevels(dplyr::anti_join(categorie, IDS, by = c("catégorie.objet", "CARAC_LVL1") )) categorie
catégorie.objet | CARAC_LVL1 | Niv0 |
---|---|---|
Perle | Céramique | Parure |
Bague | Lithique | Parure |
Épingle | Lithique | Parure |
Pendeloque | Lithique | Parure |
Bouton | Métal | Parure |
Perle | Métal | Parure |
Bague | Os | Parure |
Bouton | Os | Parure |
Ceinture | Os | Parure |
Épée | Os | Autres |
Épingle | Os | Parure |
Harnachement | Os | Autres |
Pendeloque | Os | Parure |
Perle | Os | Parure |
Bague | Verre | Parure |
Pendeloque | Verre | Parure |
Il est désormais possible d’utiliser la table categorie avec le même code que précédemment, adapté pour récupérer les lignes correspondantes du thésaurus.
<- unique(categorie$CARAC_LVL1)
materio2 <- as.character(unique(categorie$catégorie.objet))
catego2 <- unique(categorie$Niv0)
niv
<- list()
IDS2
for (m in 1:length(materio2)) {
<- list()
IDS2[[m]]
for (c in 1:length(catego2)) {
<- list()
IDS2[[m]][[c]]
for (n in 1:length(niv)) {
<- list()
IDS2[[m]][[c]][[n]]
for (i in 1:ncol(mobilier2)) {
<- mobilier2[mobilier2$CARAC_LVL1 == materio2[[m]]
IDS2[[m]][[c]][[n]][[i]] & mobilier2[,i] == niv[[n]],]
names(IDS2[[m]])[[c]] <- catego2[[c]]
names(IDS2[[m]][[c]])[[n]] <- niv[[n]]
<- rlist::list.clean(IDS2[[m]][[c]][[n]],
IDS2[[m]][[c]][[n]] function(x) length(x) == 0L, TRUE)
}
<- rlist::list.clean(IDS2[[m]][[c]], function(x) length(x) == 0L, TRUE)
IDS2[[m]][[c]]
}<- rlist::list.clean(IDS2[[m]], function(x) length(x) == 0L, TRUE)
IDS2[[m]]
}<- rlist::list.clean(IDS2, function(x) length(x) == 0L, TRUE)
IDS2
}
# Extraire les données des listes pour en faire une table
# La colonne `catégorie.objet` est créée afin de servir de clé de jointure pour la suite
for (i in 1:length(IDS2)) {
for (t in 1:length(IDS2[[i]])){
for (v in 1:length(IDS2[[i]][[t]])) {
for (w in 1:length(IDS2[[i]][[t]][[v]])){
<- cbind(as.data.frame(IDS2[[i]][[t]][[v]][[w]]),
IDS2[[i]][[t]][[v]][[w]] .objet = names(IDS2[[i]])[[t]],
catégorieNiv0 = names(IDS2[[i]][[t]])[[v]])
}
<- Reduce(rbind, IDS2[[i]][[t]][[v]])
IDS2[[i]][[t]][[v]]
}<- Reduce(rbind, IDS2[[i]][[t]])
IDS2[[i]][[t]]
}<- Reduce(rbind, IDS2[[i]])
IDS2[[i]]
}
# Rassembler les différentes associations en un même jeu de données
<- Reduce(rbind, IDS2)
IDS2
# Supprimer les lignes déjà présentes dans l'objet IDS
<- droplevels(dplyr::anti_join(IDS2, IDS, by = c("catégorie.objet", "CARAC_LVL1")))
IDS2
# Affiner la sélection pour ne conserver que les lignes qui correspondent
# aux associations effectivement présentes dans le jeu source
<- droplevels(left_join(categorie, IDS2, by = c("catégorie.objet", "CARAC_LVL1",
IDS2 "Niv0")))
== ""] <- NA
IDS2[IDS2
<- list()
parure <- list()
autres for (i in 1:ncol(IDS2)) {
if(i < ncol(IDS2)) {
<- droplevels(subset(IDS2, IDS2[,i] == "Parure"
parure[[i]] & is.na(IDS2[,i+1]) == TRUE))
<- droplevels(subset(IDS2, IDS2[,i] == "Autres"
autres[[i]] & is.na(IDS2[,i+1]) == TRUE))
}
}
<- Reduce(rbind, parure)
parure <- Reduce(rbind, autres)
autres <- rbind(parure, autres)
IDS2 rownames(IDS2) <- c()
catégorie.objet | CARAC_LVL1 | Niv0 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | |
---|---|---|---|---|---|---|
1 | Bague | Lithique | Parure | Parure | NA | NA |
27 | Bague | Lithique | Parure | Parure | Autres | NA |
7 | Pendeloque | Verre | Parure | Parure | NA | NA |
8 | Perle | Céramique | Parure | Autres | Parure | NA |
9 | Bague | Os | Parure | Ossements humains | Parure | NA |
10 | Bague | Os | Parure | Ossements animaux | Parure | NA |
11 | Bague | Os | Parure | Indéterminé | Parure | NA |
12 | Bouton | Os | Parure | Ossements humains | Parure | NA |
13 | Bouton | Os | Parure | Ossements animaux | Parure | NA |
14 | Bouton | Os | Parure | Indéterminé | Parure | NA |
15 | Ceinture | Os | Parure | Ossements humains | Parure | NA |
16 | Ceinture | Os | Parure | Ossements animaux | Parure | NA |
17 | Ceinture | Os | Parure | Indéterminé | Parure | NA |
Il reste toutefois encore quelques problèmes à régler dans la sélection obtenue Table 30. En effet, pour les objets en os, le thésaurus permet de préciser s’il s’agit d’ossements humains ou animaux. Puisque c’est une information que nous n’avons pas, il faut supprimer ces possibilités et ne conserver que l’entrée Indéterminé. De même, il y a parfois plusieurs possibilités pour une seule association. C’est ici le cas pour les bagues lithiques (rang 1 et 27 de la Table 30), qui peuvent être désignées par Parure ou Parure / Autres. Il est nécessaire de faire un choix et supprimer ces doublons pour que la fusion des jeux de données fonctionne.2
# Supprimer les rangs avec les types d'ossements dans la colonne CARAC_LVL2
<- IDS2[-grep("Ossements", IDS2$CARAC_LVL2),]
IDS2
# Supprimer les associations Parure / Autres
<- filter(IDS2, IDS2$CARAC_LVL2 == "Parure" & IDS2$CARAC_LVL3 == "Autres")
autres
<- droplevels(dplyr::anti_join(IDS2, autres, by =
IDS2 c("catégorie.objet", "CARAC_LVL1",
"CARAC_LVL2", "CARAC_LVL3")))
catégorie.objet | CARAC_LVL1 | Niv0 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 |
---|---|---|---|---|---|
Bague | Lithique | Parure | Parure | NA | NA |
Épingle | Lithique | Parure | Parure | NA | NA |
Pendeloque | Lithique | Parure | Parure | NA | NA |
Bouton | Métal | Parure | Parure | NA | NA |
Perle | Métal | Parure | Parure | NA | NA |
Bague | Verre | Parure | Parure | NA | NA |
Pendeloque | Verre | Parure | Parure | NA | NA |
Perle | Céramique | Parure | Autres | Parure | NA |
Bague | Os | Parure | Indéterminé | Parure | NA |
Bouton | Os | Parure | Indéterminé | Parure | NA |
Ceinture | Os | Parure | Indéterminé | Parure | NA |
Épingle | Os | Parure | Indéterminé | Parure | NA |
Pendeloque | Os | Parure | Indéterminé | Parure | NA |
Perle | Os | Parure | Indéterminé | Parure | NA |
Épée | Os | Autres | Indéterminé | Autres | NA |
Harnachement | Os | Autres | Indéterminé | Autres | NA |
3.5.2.3 Rassembler les données
Il est désormais possible de fusionner le jeu de données source avec les différentes variantes du thésaurus : pour les associations existantes, pour les monnaies et pour les associations non existantes.
La première étape est de séparer les informations concernant les monnaies du thésaurus IDS et de les stocker dans un nouvel objet IDS_mon. Il est désormais possible de fusionner la table n_objet avec les éléments du thésaurus IDS, puis de supprimer les colonnes inutiles et réordonner les autres suivant l’ordre prévu dans ArkeoGIS.
# Séparer les monnaies du thésaurus puisqu'elles fonctionnent différemment
<- droplevels(subset(IDS, CARAC_LVL2 == "Monnaies"))
IDS_mon <- droplevels(subset(IDS, CARAC_LVL2 != "Monnaies"))
IDS
# Fusionner le thésaurus simple (`IDS`) avec le jeu de données
<- droplevels(merge(IDS, n_objet, by=c("CARAC_LVL1", "catégorie.objet")))
IDS <- IDS[,c("Unique.public.identifier", colnames(arkeoGIS))] IDS
Unique.public.identifier | SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | CARAC_EXP | BIBLIOGRAPHY | COMMENTS | WEB_IMAGES |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PER1370 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 201:250 | 301:350 | Mobilier | Lithique | Parure | Perle | NA | Non | Scholtus 2021, PER1370, Riha 1990, n° 1353 | OBJET : perle. MATERIAU : Agate. TYPO : Riha 1990 type 11.33.1. | NA |
PER1367 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 1:25 | 151:200 | Mobilier | Lithique | Parure | Perle | NA | Non | Scholtus 2021, PER1367, Riha 1990, n° 2952b | OBJET : perle. MATERIAU : Agate. TYPO : Riha 1990 type 11.32. | NA |
PER1371 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 201:250 | 301:350 | Mobilier | Lithique | Parure | Perle | NA | Non | Scholtus 2021, PER1371, Riha 1990, n° 1357c | OBJET : perle. MATERIAU : Agate. TYPO : Riha 1990 type 11.33.1. | NA |
PER1372 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 201:250 | 301:350 | Mobilier | Lithique | Parure | Perle | NA | Non | Scholtus 2021, PER1372, Riha 1990, n° 1357d | OBJET : perle. MATERIAU : Agate. TYPO : Riha 1990 type 11.33.1. | NA |
PER1368 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 201:250 | 301:350 | Mobilier | Lithique | Parure | Perle | NA | Non | Scholtus 2021, PER1368, Riha 1990, n° 1351 | OBJET : perle. MATERIAU : Agate. TYPO : Riha 1990 type 11.33.1. | NA |
PER1381 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 1:25 | 351:400 | Mobilier | Lithique | Parure | Perle | NA | Non | Scholtus 2021, PER1381, Artefacts PRL-4160, Riha 1990, n° 2790g | OBJET : perle. MATERIAU : Cornaline. TYPO : Riha 1990 type 11.34. | NA |
Pour les associations non existante, c’est-à-dire la table IDS2, il est d’abord nécessaire d’ajouter les informations sur la catégorie des objets, en particulier la colonne Niv0, au jeu de données source pour permettre la fusion. Toutefois, cette opération ajoute des duplicatas qu’il faut ensuite supprimer.
# Fusionner le thésaurus plus complexe (`IDS2`) avec le jeu de données
<- droplevels(merge(n_objet, categorie[,c(1,3)], by="catégorie.objet"))
n_objet2 <- droplevels(merge(IDS2, n_objet2, by=c("CARAC_LVL1", "catégorie.objet", "Niv0")))
IDS2 <- IDS2[,c("Unique.public.identifier", colnames(arkeoGIS))]
IDS2
# Supprimer les duplicatas
<- IDS2[!duplicated(IDS2),] IDS2
Unique.public.identifier | SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | CARAC_EXP | BIBLIOGRAPHY | COMMENTS | WEB_IMAGES | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | PER0560 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 26:50 | 251:300 | Mobilier | Céramique | Autres | Parure | NA | Non | Scholtus 2021, PER0560, Riha 1990, n° 829 | OBJET : perle. MATERIAU : Céramique. TYPO : Riha 1990 type 11.1.1. | NA |
3 | PER0775 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 26:50 | 251:300 | Mobilier | Céramique | Autres | Parure | NA | Non | Scholtus 2021, PER0775, Riha 1990, n° 1045 | OBJET : perle. MATERIAU : Céramique. TYPO : Riha 1990 type 11.1.1. | NA |
5 | PER0777 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 26:50 | 251:300 | Mobilier | Céramique | Autres | Parure | NA | Non | Scholtus 2021, PER0777, Riha 1990, n° 1047 | OBJET : perle. MATERIAU : Céramique. TYPO : Riha 1990 type 11.1.1. | NA |
6 | PER0519 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 26:50 | 251:300 | Mobilier | Céramique | Autres | Parure | NA | Non | Scholtus 2021, PER0519, Riha 1990, n° 788 | OBJET : perle. MATERIAU : Céramique. TYPO : Riha 1990 type 11.1.1. | NA |
7 | PER0566 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 26:50 | 251:300 | Mobilier | Céramique | Autres | Parure | NA | Non | Scholtus 2021, PER0566, Riha 1990, n° 835 | OBJET : perle. MATERIAU : Céramique. TYPO : Riha 1990 type 11.1.1. | NA |
8 | PER0846 | SIT0092 | Augusta Raurica | Augst | NA | 4326 | 7.71468 | 47.53557 | NA | Oui | Non renseigné | Non renseigné | 26:50 | 251:300 | Mobilier | Céramique | Autres | Parure | NA | Non | Scholtus 2021, PER0846, Riha 1990, n° 1116 | OBJET : perle. MATERIAU : Céramique. TYPO : Riha 1990 type 11.1.1. | NA |
Enfin, pour ajouter le thésaurus dédié aux monnaies, IDS_mon, il convient d’abord d’indiquer la mention NA, pour les matériaux précisés dans le jeu de données source.
# Fusionner le thésaurus des monnaies avec le jeu de données
$Materiaux[n_objet$Materiaux == ""] <- NA
n_objet
<- droplevels(merge(IDS_mon, n_objet,
IDS_mon by.x=c("CARAC_LVL1", "catégorie.objet","CARAC_LVL3"),
by.y=c("CARAC_LVL1", "catégorie.objet","Materiaux")))
<- IDS_mon[,c("Unique.public.identifier", colnames(arkeoGIS))] IDS_mon
Unique.public.identifier | SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | CARAC_EXP | BIBLIOGRAPHY | COMMENTS | WEB_IMAGES |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MON6709 | SIT0175 | Rotacker | Kirchzarten - Zarten | NA | 4326 | 7.953658 | 47.96279 | NA | Oui | Non renseigné | Non renseigné | -150:-126 | -50:-26 | Mobilier | Métal | Monnaies | Argent | NA | Non | Scholtus 2021, MON6709, n°408, Nick 2006 | OBJET : monnaie. MATERIAU : Argent. TYPO : KALETEDOY, Lingon. | NA |
MON3625 | SIT0352 | Robache | Saint-Dié-des-Vosges | NA | 4326 | 6.956481 | 48.30710 | NA | Non | Non renseigné | Non renseigné | -150:-126 | -50:-26 | Mobilier | Métal | Monnaies | Argent | NA | Non | Scholtus 2021, MON3625, n°358, Lagadec, Liéger 1998 | OBJET : monnaie. MATERIAU : Argent. TYPO : KALETEDOY, Lingon. | NA |
MON3980 | SIT0352 | Robache | Saint-Dié-des-Vosges | NA | 4326 | 6.956481 | 48.30710 | NA | Non | Non renseigné | Non renseigné | -150:-126 | -50:-26 | Mobilier | Métal | Monnaies | Argent | NA | Non | Scholtus 2021, MON3980, Lagadec, Liéger 1998, n°358 | OBJET : monnaie. MATERIAU : Argent. TYPO : KALETEDOY, Lingon. | NA |
MON3957 | SIT0352 | Robache | Saint-Dié-des-Vosges | NA | 4326 | 6.956481 | 48.30710 | NA | Non | Non renseigné | Non renseigné | -150:-126 | -50:-26 | Mobilier | Métal | Monnaies | Argent | NA | Non | Scholtus 2021, MON3957, Lagadec, Liéger 1998, n°358 | OBJET : monnaie. MATERIAU : Argent. TYPO : KALETEDOY, Lingon. | NA |
MON4199 | SIT0352 | Robache | Saint-Dié-des-Vosges | NA | 4326 | 6.956481 | 48.30710 | NA | Non | Non renseigné | Non renseigné | -150:-126 | -50:-26 | Mobilier | Métal | Monnaies | Argent | NA | Non | Scholtus 2021, MON4199, n°358, Lagadec, Liéger 1998 | OBJET : monnaie. MATERIAU : Argent. TYPO : KALETEDOY, Lingon. | NA |
MON3501 | SIT0352 | Robache | Saint-Dié-des-Vosges | NA | 4326 | 6.956481 | 48.30710 | NA | Non | Non renseigné | Non renseigné | -150:-126 | -50:-26 | Mobilier | Métal | Monnaies | Argent | NA | Non | Scholtus 2021, MON3501, Lagadec, Liéger 1998, n°358 | OBJET : monnaie. MATERIAU : Argent. TYPO : KALETEDOY, Lingon. | NA |
Pour finir, ces trois tables sont assemblées pour recréer un unique jeu de données nommé total et la colonne Unique.public.identifier est supprimée.
# Rassembler les données
<- rbind(IDS, IDS2, IDS_mon)
total
# Supprimer la colonne Unique.public.identifier
<- total[,-1] total
4 Ajouter de nouvelles lignes pour les sites
La table total est désormais prête à être importées dans ArkeoGIS. Toutefois, nous avions vu dans la Section 1 que bien qu’il s’agisse ici d’une table dédiée aux mobiliers, une seconde table permettait de définir plus précisément les sites d’où ces objets proviennent. Il est donc possible d’ajouter des lignes dans le jeu de données total pour préciser ces sites.
4.1 Récupérer les informations sur les sites
La première étape consiste à récupérer dans une nouvelle table sites2 les occurrences unique de chaque site de la table total à l’aide de l’identifiant unique SITE_SOURCE_ID. L’on peut ensuite effacer les colonnes de datations, caractéristiques et bibliographie puisque celles-ci seront remplacées par des données correspondant aux sites en eux-même. Les données de la colonne COMMENTS, quant à elles, sont effacées.
# Récupérer les occurrences uniques de chaque site
<- distinct(total, SITE_SOURCE_ID, .keep_all = TRUE)
sites2
# Supprimer les colonnes qui seront remplacées
<- sites2[,c(1:11, 21, 22)]
sites2
# Effacer le contenu de la colonne COMMENTS
12] <- NA sites2[,
4.2 Les datations
La colonne Datation de la table sites (Table 35 : Avant) ne correspond pas à la structure et au format demandés par ArkeoGIS pour les datations. Elles ne sont pas non plus structurées, on y trouve des informations sous formes de dates ou de texte sans logique. Elles nécessitent donc un nettoyage et une homogénéisation.
Il s’agit, d’abord, de remplacer les informations textuelles par les dates de la chronologie de l’Europe continentale proposée par ArkeoGIS, mais aussi de structurer les données pour qu’elles aient toutes le même format et soient manipulables par la suite.
# Remplacer les noms de périodes par les dates correspondantes
5] <- sites[,5] %>%
sites[,str_replace_all(c("[Pp]ériode augustéenne|[Aa]ugustéen|début époque romaine" = "-25:14",
"Bas-?\\s?Empire" = "236:476",
"haut Moyen-Age" = "477:986",
"Fin Ier-IIe s. ap. J.-C." = "76:200",
"Gallo-romain|[Gg]al+o|époque romaine" = "-25:476",
"Hallstatt" = "-800:-481",
"Mérovingien" = "477:800",
"Haut-?\\s?Empire" = "15:235",
"Auguste-Claude" = "-25:50",
"IIIe s\\.|IIIe" = "201:300",
"Milieu Ier ap. J.-C." = "26:75",
"Ier" = "1:100",
"IVe s. av." = "-400:-301",
"IVe s. apr.|IVe s. ap. J.-C." = "301:400",
"Ve" = "401:500",
"VIIe s. apr." = "601:700",
"IIe s. apr." = "101:200",
"La Tène\\s|LT\\s" = "-480:-26",
"LTA-B" = "-480:-261",
"LTA" = "-480:-381",
"LTB" = "-380:-261",
"LTC1" = "-260:-201",
"LTC2" = "-200:-151",
"LTC" = "-260:-151",
"LTD1-D2a" = "-150:-51",
"LTD1b_D2a" = "-125:-51",
"LTD1a" = "-150:-126",
"LTD1b" = "-125:-76",
"LTD1" = "-150:-76",
"LT?D2a" = "-75:-51",
"LTD2b|Précoce" = "-50:-26",
"LTD2" = "-75:-26",
"LTD" = "-150:-26",
"Non renseigné|^$" = "Indéterminé",
";|/|au" = "-",
"--" = " - -",
"(\\d+)-\\s" = "\\1 - ",
"(\\d+)-(\\d+)" = "\\1 - \\2"
))
Table 35: Contenu de la colonne Datations
Var1 | Freq |
---|---|
586 | |
-10:30 | 2 |
-120:-50 | 4 |
-150:-126 | 1 |
-150:-26 | 79 |
-150:-76 | 3 |
-150:26 | 1 |
-150:30 | 1 |
-200:-151 | 5 |
-225:-201 | 2 |
Augustéen | 2 |
Bas-Empire | 1 |
Bas-Empire au haut Moyen-Age | 1 |
Fin Ier-IIe s. ap. J.-C. | 1 |
Gallo | 8 |
Hallstatt - Mérovingien | 1 |
Haut-Empire | 4 |
Haut-Empire - Bas-Empire | 1 |
Haut-Empire - IIIe | 1 |
Haut-Empire au Bas-Empire | 20 |
Haut-Empire au haut Moyen-Age | 6 |
Haut-Empire au IIIe s. | 2 |
Ier-Ve | 1 |
IIIe s. au Bas Empire | 2 |
IIIe s. au haut Moyen-Age | 1 |
Indéterminé | 2 |
IVe s. av. - IVe s. apr. | 1 |
La Tène au Bas-Empire | 5 |
LT - Gallo | 2 |
LTA-B / LTD | 1 |
LTA - Haut-Empire | 1 |
LTB-Gallo | 1 |
LTC | 12 |
LTC-gallo | 1 |
LTC-Gallo | 4 |
LTC-LTD | 2 |
LTC1 | 2 |
LTC1-Gallo | 1 |
LTC1-LTC2 | 1 |
LTC2 | 1 |
LTC2-Gallo | 2 |
LTC2-LTD1 | 8 |
LTC2-LTD1a | 1 |
LTC2-LTD2 | 1 |
LTC2 - IVe s. ap. J.-C. | 1 |
LTC2 ; Auguste-Claude | 1 |
LTD | 142 |
LTD-augustéen | 1 |
LTD-gallo | 1 |
LTD-Gallo | 63 |
LTD-Gallo-romain | 2 |
LTD-Galo | 1 |
LTD - Augustéen | 1 |
LTD - Gallo | 1 |
LTD - période augustéenne | 2 |
LTD - VIIe s. apr. | 1 |
LTD1 | 4 |
LTD1-D2a | 1 |
LTD1-Gallo | 1 |
LTD1-Période augustéenne | 1 |
LTD1 - début époque romaine | 1 |
LTD1b | 3 |
LTD1b-Gallo | 2 |
LTD1b-LD2a | 1 |
LTD1b-LTD2a | 1 |
LTD1b - IIe s. apr. | 1 |
LTD1b_D2a - époque romaine | 1 |
LTD2 | 6 |
LTD2-Galllo | 1 |
LTD2-Gallo | 7 |
LTD2-Haut Empire | 2 |
LTD2 - Gallo | 1 |
LTD2b - Augustéen | 2 |
Mérovingien | 1 |
Milieu Ier ap. J.-C. | 1 |
Non renseigné | 1 |
Période augustéenne | 2 |
Précoce - Augustéen | 1 |
Var1 | Freq |
---|---|
-10:30 | 2 |
-120:-50 | 4 |
-125:-51 - -25:476 | 1 |
-125:-76 | 3 |
-125:-76 - -25:476 | 2 |
-125:-76 - -75:-51 | 2 |
-125:-76 - 101:200 | 1 |
-150:-126 | 1 |
-150:-26 | 221 |
-150:-26 - -25:14 | 4 |
-150:-26 - -25:476 | 68 |
-150:-26 - 601:700 | 1 |
-150:-51 | 1 |
-150:-76 | 7 |
-150:-76 - -25:14 | 2 |
-150:-76 - -25:476 | 1 |
-150:26 | 1 |
-150:30 | 1 |
-200:-151 | 6 |
-200:-151 - -150:-126 | 1 |
-200:-151 - -150:-76 | 8 |
-200:-151 - -25:476 | 2 |
-200:-151 - -25:50 | 1 |
-200:-151 - -75:-26 | 1 |
-200:-151 - 301:400 | 1 |
-225:-201 | 2 |
-25:14 | 4 |
-25:476 | 8 |
-260:-151 | 12 |
-260:-151 - -150:-26 | 2 |
-260:-151 - -25:476 | 5 |
-260:-201 | 2 |
-260:-201 - -200:-151 | 1 |
-260:-201 - -25:476 | 1 |
-380:-261 - -25:476 | 1 |
-400:-301 - 301:400 | 1 |
-480:-26 - -25:476 | 2 |
-480:-26 - 236:476 | 5 |
-480:-261 - -150:-26 | 1 |
-480:-381 - 15:235 | 1 |
-50:-26 - -25:14 | 3 |
-75:-26 | 6 |
-75:-26 - -25:476 | 9 |
-75:-26 - 15:235 | 2 |
-800:-481 - 477:800 | 1 |
1:100 - 401:500 | 1 |
15:235 | 4 |
15:235 - 201:300 | 3 |
15:235 - 236:476 | 21 |
15:235 - 477:986 | 6 |
201:300 - 236:476 | 2 |
201:300 - 477:986 | 1 |
236:476 | 1 |
236:476 - 477:986 | 1 |
26:75 | 1 |
477:800 | 1 |
76:200 | 1 |
Indéterminé | 589 |
Il est désormais possible de reprendre le code utilisé Section 3.4.2 pour créer les colonnes STARTING_PERIOD, ENDING_PERIOD dans la table sites2, en adaptant les expressions régulières aux données actuelles.
# Récupérer les dates de début et de fin dans des colonnes séparées
<- data.frame(STARTING_PERIOD = character(), ENDING_PERIOD = character())
date <- strcapture("^(-?\\d+:-?\\d+)\\s-\\s(-?\\d+:-?\\d+)$", sites$Datation, date)
date
# Récupérer les dates uniques
<- data.frame(STARTING_PERIOD = character())
date2 <- strcapture("^(-?\\d+:-?\\d+)$", sites$Datation, date2)
date2 # Dupliquer la colonne pour avoir une date de fin
$ENDING_PERIOD <- date2$STARTING_PERIOD
date2
# Ajouter un identifiant unique identique aux deux tables
# cela fonctionne puisque les données manquantes sont indiquées
# par des NAs et que l'ordre des données est conservé
$ID <- paste0("ID", 1:nrow(date))
date$ID <- paste0("ID", 1:nrow(date2))
date2
# Joindre les deux tables en remplaçant les données manquantes de la table
# `date` par les données de la table `date2`
# Et remplacer les NA restant par la mention "indéterminé"
<- dplyr::left_join(date, date2, by = "ID") %>%
date3
## Cette opération crée des nouvelles colonnes STARTING_PERIOD et ENDING_PERIOD
## x et y
# Remplacer les NAs par les données disponibles dans les colonnes y
::mutate(STARTING_PERIOD = ifelse(is.na(STARTING_PERIOD.x),
dplyr%>%
STARTING_PERIOD.y, STARTING_PERIOD.x)) ::mutate(ENDING_PERIOD = ifelse(is.na(ENDING_PERIOD.x),
dplyr%>%
ENDING_PERIOD.y, ENDING_PERIOD.x))
# Supprimer les colonnes en trop
::select(-STARTING_PERIOD.y, -STARTING_PERIOD.x) %>%
dplyr::select(-ENDING_PERIOD.y, -ENDING_PERIOD.x) %>%
dplyr
# Et remplacer les NA restant par la mention "indéterminé"
replace(is.na(.), "Indéterminé")
# Supprimer la colonne ID
<- date3[,-1] date3
STARTING_PERIOD | ENDING_PERIOD |
---|---|
-400:-301 | 301:400 |
Indéterminé | Indéterminé |
Indéterminé | Indéterminé |
-150:-26 | -150:-26 |
-75:-26 | -75:-26 |
-150:-76 | -150:-76 |
Ces nouvelles colonnes de datations peuvent désormais être ajoutées à la table sites.
# Ajouter les dates à la table `sites`
<- cbind(sites, date3) sites
SITE_SOURCE_ID | Centroide | Etat.de.la.recherche | Occupation | Datation | Bibliographie | Activités.artisanales | Type.de.site | STARTING_PERIOD | ENDING_PERIOD |
---|---|---|---|---|---|---|---|---|---|
SIT0001 | VRAI | Fouillé | Non renseigné | -400:-301 - 301:400 | R. Cordie-Hachenberg, A. Haffner 1991, Haffner 1971 | Funéraire | -400:-301 | 301:400 | |
SIT0002 | VRAI | Non renseigné | Non renseigné | Indéterminé | Habitat indéterminé | Indéterminé | Indéterminé | ||
SIT0003 | VRAI | Non renseigné | Non renseigné | Indéterminé | Indéterminé | Indéterminé | Indéterminé | ||
SIT0004 | VRAI | Non renseigné | Non renseigné | -150:-26 | Nick 2006 Féliu 2008 | Habitat de plaine | -150:-26 | -150:-26 | |
SIT0005 | VRAI | Sondé | Unique | -75:-26 | ArkeoGIS D. Mischka 2007 Hofmann 1999, 74 Weber-Jenisch 1995, 136 Röder 1995, 176-17 Bender et alii 1993 Féliu 2008 | Habitat indéterminé | -75:-26 | -75:-26 | |
SIT0006 | VRAI | Prospecté pédestre | Unique | -150:-76 | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | Fer | Dépôt; Habitat indéterminé | -150:-76 | -150:-76 |
4.3 Relier les informations aux sites présents dans la base objet
Maintenant que les dates sont au format défini pour ArkeoGIS, il est possible de les ajouter à la table sites2, c’est-à-dire celle contenant les sites mentionnés dans la table objets, en même temps que les informations bibliographiques, en s’appuyant sur l’identifiant unique des sites.
# Ajouter les colonnes de dates et bibliographie dans la table `sites2`
<- droplevels(merge(sites2, sites[,c(1,6,7:10)], by = "SITE_SOURCE_ID"))
sites2
# Renommer la colonne bibliographie pour correspondre à ArkeoGIS
colnames(sites2)[14] <- colnames(arkeoGIS[20])
SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | COMMENTS | WEB_IMAGES | BIBLIOGRAPHY | Activités.artisanales | Type.de.site | STARTING_PERIOD | ENDING_PERIOD |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0001 | Wederath-Belginum | Wederath | NA | 4326 | 7.164440 | 49.86499 | NA | Oui | Non renseigné | Fouillé | NA | NA | R. Cordie-Hachenberg, A. Haffner 1991, Haffner 1971 | Funéraire | -400:-301 | 301:400 | |
SIT0002 | Cherain-Brisy | Cherain | NA | 4326 | 5.865210 | 50.17996 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Habitat indéterminé | Indéterminé | Indéterminé | ||
SIT0003 | Han-sur-Lesse | Han-sur-Lesse | NA | 4326 | 5.186230 | 50.12674 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Indéterminé | Indéterminé | Indéterminé | ||
SIT0004 | Klosteräcker | Breisach-Hochstetten | NA | 4326 | 7.625970 | 48.02291 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Nick 2006 Féliu 2008 | Habitat de plaine | -150:-26 | -150:-26 | |
SIT0005 | Münsterberg | Breisach | NA | 4326 | 7.579663 | 48.02931 | NA | Oui | Unique | Sondé | NA | NA | ArkeoGIS D. Mischka 2007 Hofmann 1999, 74 Weber-Jenisch 1995, 136 Röder 1995, 176-17 Bender et alii 1993 Féliu 2008 | Habitat indéterminé | -75:-26 | -75:-26 | |
SIT0006 | Kegelriß | Ehrenkirchen-Ehrenstetten | NA | 4326 | 7.776640 | 47.89846 | NA | Oui | Unique | Prospecté pédestre | NA | NA | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | Fer | Dépôt; Habitat indéterminé | -150:-76 | -150:-76 |
4.4 Ajouter les caractéristiques pour les sites
La table sites contient deux informations pour caractériser les sites qui correspondent à deux thésaurus différents dans ArkeoGIS : les types de sites et les activités artisanales. Il est donc nécessaire de procéder en deux étapes successives.
4.4.1 Les types de sites
Les types de sites sont renseignés par la caractéristique Immobilier dans ArkeoGIS.
<- read.csv2("data/Immobilier.csv", sep = ";", encoding = "UTF-8") immo
IDArkeoGIS | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | IdArk | IdPactols | IdAat |
---|---|---|---|---|---|---|---|---|
2446 | Immobilier | Édifice public | https://ark.frantiq.fr/ark:/26678/pcrt4HEc49rMp7 | 17636 | ||||
2447 | Immobilier | Édifice public | Amphithéâtre | https://ark.frantiq.fr/ark:/26678/pcrtEmYHAsBI3W | 13174 | |||
2448 | Immobilier | Édifice public | Odéon | https://ark.frantiq.fr/ark:/26678/pcrtzY8mRfSGA7 | 15958 | |||
2449 | Immobilier | Édifice public | Théâtre | https://ark.frantiq.fr/ark:/26678/pcrtU6s8jjsWol | 17297 | |||
524 | Immobilier | Habitat | http://ark.frantiq.fr/ark:/26678/pcrtbptj4SOA1W | 14990 | http://vocab.getty.edu/page/aat/300008347 | |||
525 | Immobilier | Habitat | Non renseigné | NA |
Le thésaurus peut aussi être téléchargé ici.
La première étape d’alignement sur ce thésaurus consiste donc à préciser dans la table sites2 que les caractéristiques suivantes font référence à l’immobilier en créant la colonne CARAC_NAME.
# Créer la colonne CARAC_NAME avec l'information "Immobilier"
colnames(arkeoGIS[14])] <- "Immobilier" sites2[,
Les caractéristiques suivantes, comme pour le mobilier, nécessitent un nettoyage des données existantes et une adaptation au thésaurus. Par ailleurs, il peut y avoir plusieurs types de sites dans une même cellule, séparés par un ; (Table 40). Cette information doit être extraite et le site concerné dupliqué autant de fois qu’il y a de descriptif (Table 41).
# Séparer et multiplier les rangs avec plusieurs types
<- tidyr::separate_rows(sites2, Type.de.site, sep = ";")
sites2
# Supprimer les espaces superflus en début et fin de cellules
$Type.de.site <- str_trim(sites2$Type.de.site) sites2
Table 40: Contenu de la colonne Type.de.site dans la table sites
Var1 | Freq |
---|---|
184 | |
Autre | 5 |
Camp militaire | 5 |
Dépôt | 12 |
Dépôt; Habitat de plaine | 4 |
Dépôt; Habitat indéterminé | 2 |
Funéraire | 164 |
Funéraire; Habitat indéterminé | 2 |
Funéraire; Indéterminé | 5 |
Habitat de hauteur | 2 |
Habitat de hauteur; Indéterminé; Site fortifié | 1 |
Habitat de hauteur; Site fortifié | 20 |
Habitat de plaine | 65 |
Habitat de plaine; Indéterminé | 2 |
Habitat de plaine; Site fortifié | 6 |
Habitat indéterminé | 77 |
Habitat indéterminé; Indéterminé | 3 |
Habitat indéterminé; Indéterminé; Site fortifié | 2 |
Habitat indéterminé; Sanctuaire | 2 |
Habitat indéterminé; Site fortifié | 26 |
Indéterminé | 423 |
Sanctuaire | 10 |
Site d'exploitation | 2 |
Site fortifié | 1 |
Structure isolée | 1 |
Trouvaille isolée | 18 |
Var1 | Freq |
---|---|
180 | |
Autre | 5 |
Camp militaire | 5 |
Dépôt | 17 |
Funéraire | 159 |
Habitat de hauteur | 22 |
Habitat de plaine | 64 |
Habitat indéterminé | 106 |
Indéterminé | 429 |
Sanctuaire | 12 |
Site d'exploitation | 2 |
Site fortifié | 49 |
Trouvaille isolée | 18 |
SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | COMMENTS | WEB_IMAGES | BIBLIOGRAPHY | Activités.artisanales | Type.de.site | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0068 | Besançon | Besançon | NA | 4326 | 6.01815 | 47.24878 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Habitat indéterminé | -150:-26 | -150:-26 | Immobilier | ||
SIT0069 | Dragages du Doubs | Besançon | NA | 4326 | 6.01815 | 47.24878 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Habitat indéterminé | -150:-26 | -150:-26 | Immobilier | ||
SIT0069 | Dragages du Doubs | Besançon | NA | 4326 | 6.01815 | 47.24878 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Site fortifié | -150:-26 | -150:-26 | Immobilier | ||
SIT0070 | Extra muros | Besançon | NA | 4326 | 6.01815 | 47.24878 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Habitat indéterminé | -150:-26 | -150:-26 | Immobilier | ||
SIT0071 | Arsenal | Besançon | NA | 4326 | 6.01815 | 47.24878 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Habitat indéterminé | -150:-26 | -150:-26 | Immobilier | ||
SIT0071 | Arsenal | Besançon | NA | 4326 | 6.01815 | 47.24878 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Site fortifié | -150:-26 | -150:-26 | Immobilier |
Parce que les sites présents dans la base source ne sont décrits que par 13 types différents et parce qu’ils peuvent correspondre à plusieurs entrées dans le thésaurus d’ArkeoGIS, il est plus simple d’effectuer cet alignement à la main ici. Par ailleurs, la plupart de ces types ne sont pas assez spécifiques pour permettre de remplir les quatre niveaux de caractérisation du thésaurus. Ainsi, excepté pour l’information Sanctuaire, seule la CARAC_LVL1 est implémentée.
Enfin, certains types ne permettent pas de décrire un site et devront être enlevés par la suite. En attendant, l’information Indéterminé est indiquée.
# Récupérer dans une table les différents types de site
<- as.data.frame(table(sites2$Type.de.site))
immo2
# Ajouter les colonnes de caractérisation vides dans cette table
<- c("CARAC_LVL1", "CARAC_LVL2", "CARAC_LVL3", "CARAC_LVL4")
col <- NA
immo2[, col]
# Pour chaque niveau de caractérisation indiquer la valeur correspondante dans ArkeoGIS
$CARAC_LVL1 <- immo2$Var1 %>%
immo2str_replace_all(c(
"Site d'exploitation|Indéterminé|Trouvaille isolée|Autre" = NA,
"Camp militaire|Site fortifié" = "Enceinte",
"Dépôt" = "Dépôt",
"Funéraire" = "Funéraire",
"Habitat.*" = "Habitat",
"Sanctuaire" = "Rituel"
))$CARAC_LVL1[immo2$Var1 == ""] <- NA
immo2
$CARAC_LVL2 <- immo2$Var1 %>%
immo2str_replace_all(c(
"Site d'exploitation|Indéterminé|Trouvaille isolée|Autre" = NA,
"Camp militaire|Site fortifié" = NA,
"Dépôt" = NA,
"Funéraire" = NA,
"Habitat.*" = NA,
"Sanctuaire" = "Édifice religieux"
))$CARAC_LVL2[immo2$Var1 == ""] <- NA
immo2
$CARAC_LVL3 <- immo2$Var1 %>%
immo2str_replace_all(c(
"Site d'exploitation|Indéterminé|Trouvaille isolée|Autre" = NA,
"Camp militaire|Site fortifié" = NA,
"Dépôt" = NA,
"Funéraire" = NA,
"Habitat.*" = NA,
"Sanctuaire" = "Sanctuaire"
))$CARAC_LVL3[immo2$Var1 == ""] <- NA
immo2
# supprimer la colonne Freq qui provient de la fonction table utilisée au début
<- immo2[,-2] immo2
Var1 | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 |
---|---|---|---|---|
NA | NA | NA | NA | |
Autre | NA | NA | NA | NA |
Camp militaire | Enceinte | NA | NA | NA |
Dépôt | Dépôt | NA | NA | NA |
Funéraire | Funéraire | NA | NA | NA |
Habitat de hauteur | Habitat | NA | NA | NA |
Habitat de plaine | Habitat | NA | NA | NA |
Habitat indéterminé | Habitat | NA | NA | NA |
Indéterminé | NA | NA | NA | NA |
Sanctuaire | Rituel | Édifice religieux | Sanctuaire | NA |
Site d'exploitation | NA | NA | NA | NA |
Site fortifié | Enceinte | NA | NA | NA |
Trouvaille isolée | NA | NA | NA | NA |
# Ajouter les colonnes de caractéristiques pour chaque site correspondant
<- droplevels(merge(sites2, immo2, by.x = "Type.de.site", by.y = "Var1")) sites2
Type.de.site | SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | COMMENTS | WEB_IMAGES | BIBLIOGRAPHY | Activités.artisanales | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
208 | Funéraire | SIT0001 | Wederath-Belginum | Wederath | NA | 4326 | 7.164440 | 49.86499 | NA | Oui | Non renseigné | Fouillé | NA | NA | R. Cordie-Hachenberg, A. Haffner 1991, Haffner 1971 | -400:-301 | 301:400 | Immobilier | Funéraire | NA | NA | NA | |
482 | Habitat indéterminé | SIT0002 | Cherain-Brisy | Cherain | NA | 4326 | 5.865210 | 50.17996 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Indéterminé | Indéterminé | Immobilier | Habitat | NA | NA | NA | ||
616 | Indéterminé | SIT0003 | Han-sur-Lesse | Han-sur-Lesse | NA | 4326 | 5.186230 | 50.12674 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Indéterminé | Indéterminé | Immobilier | NA | NA | NA | NA | ||
434 | Habitat de plaine | SIT0004 | Klosteräcker | Breisach-Hochstetten | NA | 4326 | 7.625970 | 48.02291 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Nick 2006 Féliu 2008 | -150:-26 | -150:-26 | Immobilier | Habitat | NA | NA | NA | |
458 | Habitat indéterminé | SIT0005 | Münsterberg | Breisach | NA | 4326 | 7.579663 | 48.02931 | NA | Oui | Unique | Sondé | NA | NA | ArkeoGIS D. Mischka 2007 Hofmann 1999, 74 Weber-Jenisch 1995, 136 Röder 1995, 176-17 Bender et alii 1993 Féliu 2008 | -75:-26 | -75:-26 | Immobilier | Habitat | NA | NA | NA | |
195 | Dépôt | SIT0006 | Kegelriß | Ehrenkirchen-Ehrenstetten | NA | 4326 | 7.776640 | 47.89846 | NA | Oui | Unique | Prospecté pédestre | NA | NA | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | Fer | -150:-76 | -150:-76 | Immobilier | Dépôt | NA | NA | NA |
Il faut encore supprimer les lignes pour lesquelles aucun alignement n’a pu être effectuer. Toutefois, il y avait parmi ces types la mention Site d’exploitation qui renvoie à des sites de production et donc à la partie suivante (Section 4.4.2). Il faut changer la mention Immobilier, par Production pour ces éléments avant de supprimer toutes les autres lignes avec la mention NA dans la colonne CARAC_LVL1. Cependant, l’un de ces sites est aussi distingué par la colonne Activités.artisanales et sera donc ajouté à nouveau lors de l’étape suivante, il peut donc être effacé
Enfin, les colonnes Type.de.site et BIBLIOGRAPHY peuvent être supprimées et la colonne CARAC_EXP dois être ajoutée. Pour finir, la table est réordonnée selon le modèle défini par ArkeoGIS.
# Distinguer les sites avec la mention "Sites d'exploitation" comme type de site
$CARAC_NAME[sites2$Type.de.site == "Site d'exploitation"] <- "Production"
sites2$CARAC_LVL1[sites2$Type.de.site == "Site d'exploitation"] <- "Autres"
sites2
# Supprimer les rangs inutiles
<- sites2[!(sites2$CARAC_NAME == "Immobilier" & is.na(sites2$CARAC_LVL1) == T),]
sites2 <- sites2[!(sites2$SITE_SOURCE_ID == "SIT0269" & sites2$CARAC_NAME == "Production"),]
sites2
# Supprimer et ajouter les colonnes nécessaires
<- sites2[ ,-c(1, 16)]
sites2 $CARAC_EXP <- "Non"
sites2
# Réordonner la table
<- sites2[,colnames(arkeoGIS)] sites2
'data.frame': 435 obs. of 22 variables:
$ SITE_SOURCE_ID : chr "SIT0001" "SIT0002" "SIT0004" "SIT0005" ...
$ SITE_NAME : chr "Wederath-Belginum" "Cherain-Brisy" "Klosteräcker" "Münsterberg" ...
$ MAIN_CITY_NAME : chr "Wederath" "Cherain" "Breisach-Hochstetten" "Breisach" ...
$ GEONAME_ID : logi NA NA NA NA NA NA ...
$ PROJECTION_SYSTEM : chr "4326" "4326" "4326" "4326" ...
$ LONGITUDE : num 7.16 5.87 7.63 7.58 7.78 ...
$ LATITUDE : num 49.9 50.2 48 48 47.9 ...
$ ALTITUDE : logi NA NA NA NA NA NA ...
$ CITY_CENTROID : Factor w/ 2 levels "Non","Oui": 2 2 2 2 2 2 2 2 1 2 ...
$ OCCUPATION : chr "Non renseigné" "Non renseigné" "Non renseigné" "Unique" ...
$ STATE_OF_KNOWLEDGE: chr "Fouillé" "Non renseigné" "Non renseigné" "Sondé" ...
$ STARTING_PERIOD : chr "-400:-301" "Indéterminé" "-150:-26" "-75:-26" ...
$ ENDING_PERIOD : chr "301:400" "Indéterminé" "-150:-26" "-75:-26" ...
$ CARAC_NAME : chr "Immobilier" "Immobilier" "Immobilier" "Immobilier" ...
$ CARAC_LVL1 : chr "Funéraire" "Habitat" "Habitat" "Habitat" ...
$ CARAC_LVL2 : chr NA NA NA NA ...
$ CARAC_LVL3 : chr NA NA NA NA ...
$ CARAC_LVL4 : logi NA NA NA NA NA NA ...
$ CARAC_EXP : chr "Non" "Non" "Non" "Non" ...
$ BIBLIOGRAPHY : chr "R. Cordie-Hachenberg, A. Haffner 1991, Haffner 1971" "" "Nick 2006\nFéliu 2008" "ArkeoGIS D. Mischka 2007\nHofmann 1999, 74\nWeber-Jenisch 1995, 136\nRöder 1995, 176-17\nBender et alii 1993\nFéliu 2008" ...
$ COMMENTS : logi NA NA NA NA NA NA ...
$ WEB_IMAGES : logi NA NA NA NA NA NA ...
4.4.2 Les types de production
Les types de production sont renseignés par la caractéristique Production dans ArkeoGIS.
<- read.csv2("data/Production.csv", sep = ";", encoding = "UTF-8") prod
IDArkeoGIS | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | IdArk | IdPactols | IdAat |
---|---|---|---|---|---|---|---|---|
361 | Production | Agricole | http://ark.frantiq.fr/ark:/26678/pcrtIdEjFMFAod | 13681 | http://vocab.getty.edu/page/aat/300004895 | |||
362 | Production | Agricole | Grenier | http://ark.frantiq.fr/ark:/26678/pcrtGBctSVZOBy | 14923 | http://vocab.getty.edu/page/aat/300004929 | ||
363 | Production | Agricole | Silo | http://ark.frantiq.fr/ark:/26678/pcrtdgALrHBSlv | 16944 | http://vocab.getty.edu/page/aat/300005024 | ||
364 | Production | Céramique | https://ark.frantiq.fr/ark:/26678/pcrtYPpmkDk2rS | 17239 | http://vocab.getty.edu/page/aat/300386308 | |||
365 | Production | Céramique | Extraction | http://ark.frantiq.fr/ark:/26678/pcrtpZqoqAbrdg | 21835 | http://vocab.getty.edu/page/aat/300000388 | ||
366 | Production | Céramique | Atelier | http://ark.frantiq.fr/ark:/26678/pcrtfUZSMbifle | 15962 | http://vocab.getty.edu/page/aat/300004531 |
Le thesaurus peut aussi être téléchargé ici.
Puisque dans la table sites2 les sites ont été multipliés en fonction de leur nombre de types différents, il n’est pas possible de la réutiliser directement pour renseigner les sites de production. Il est nécessaires de créer une nouvelle table Sites_prod en reprenant le code utilisé Section 4.1.
# Récupérer les occurrences uniques de chaque site
<- distinct(total, SITE_SOURCE_ID, .keep_all = TRUE)
Sites_prod
# Supprimer les colonnes qui seront remplacées
<- Sites_prod[,c(1:11, 21, 22)]
Sites_prod
# Effacer le contenu de la colonne COMMENTS
12] <- NA Sites_prod[,
De la même manière que pour les types de sites, on peut y ajouter les informations sur la bibliographie et les datations déjà mises aux normes et conservées dans la table sites.
# Ajouter les colonnes de dates et bibliographie dans la table `Sites_prod`
<- droplevels(merge(Sites_prod, sites[,c(1,6,7:10)], by = "SITE_SOURCE_ID"))
Sites_prod
# Renommer la colonne bibliographie pour correspondre à ArkeoGIS
colnames(Sites_prod)[14] <- colnames(arkeoGIS[20])
SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | COMMENTS | WEB_IMAGES | BIBLIOGRAPHY | Activités.artisanales | Type.de.site | STARTING_PERIOD | ENDING_PERIOD |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0001 | Wederath-Belginum | Wederath | NA | 4326 | 7.164440 | 49.86499 | NA | Oui | Non renseigné | Fouillé | NA | NA | R. Cordie-Hachenberg, A. Haffner 1991, Haffner 1971 | Funéraire | -400:-301 | 301:400 | |
SIT0002 | Cherain-Brisy | Cherain | NA | 4326 | 5.865210 | 50.17996 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Habitat indéterminé | Indéterminé | Indéterminé | ||
SIT0003 | Han-sur-Lesse | Han-sur-Lesse | NA | 4326 | 5.186230 | 50.12674 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Indéterminé | Indéterminé | Indéterminé | ||
SIT0004 | Klosteräcker | Breisach-Hochstetten | NA | 4326 | 7.625970 | 48.02291 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Nick 2006 Féliu 2008 | Habitat de plaine | -150:-26 | -150:-26 | |
SIT0005 | Münsterberg | Breisach | NA | 4326 | 7.579663 | 48.02931 | NA | Oui | Unique | Sondé | NA | NA | ArkeoGIS D. Mischka 2007 Hofmann 1999, 74 Weber-Jenisch 1995, 136 Röder 1995, 176-17 Bender et alii 1993 Féliu 2008 | Habitat indéterminé | -75:-26 | -75:-26 | |
SIT0006 | Kegelriß | Ehrenkirchen-Ehrenstetten | NA | 4326 | 7.776640 | 47.89846 | NA | Oui | Unique | Prospecté pédestre | NA | NA | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | Fer | Dépôt; Habitat indéterminé | -150:-76 | -150:-76 |
Enfin, cette table doit encore être filtrée pour ne conserver que les sites pour lesquels une activités artisanales est mentionnée. Il est alors possible de créer la colonne CARAC_NAME en y indiquant la mention Production.
# Remplacer les cellules vides de la colonne Activités.artisanales par "NA"
$Activités.artisanales == "", 15] <- NA
Sites_prod[Sites_prod
# Ne conserver que les lignes pour lesquelles l'information Activités.artisanales existe
<- Sites_prod[is.na(Sites_prod$Activités.artisanales) == F,]
Sites_prod
# Créer la colonne CARAC_NAME
$CARAC_NAME <- "Production" Sites_prod
SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | COMMENTS | WEB_IMAGES | BIBLIOGRAPHY | Activités.artisanales | Type.de.site | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6 | SIT0006 | Kegelriß | Ehrenkirchen-Ehrenstetten | NA | 4326 | 7.776640 | 47.89846 | NA | Oui | Unique | Prospecté pédestre | NA | NA | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | Fer | Dépôt; Habitat indéterminé | -150:-76 | -150:-76 | Production |
7 | SIT0007 | Limberg | Sasbach am Kaiserstuhl | NA | 4326 | 7.603129 | 48.15083 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Hofmann 1999, 101 Weber-Jenisch 1995 ArkeoGIS v3 D. Mischka 2007 Féliu 2008 | Fer | Habitat indéterminé; Site fortifié | -150:-26 | -150:-26 | Production |
83 | SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | NA | NA | Bronze; Fer; Orfévrerie; Tabletterie; Textile | Habitat de hauteur; Site fortifié | -150:-76 | -25:14 | Production | |
85 | SIT0085 | La Pierre d'Appel | Étival-Clairefontaine | NA | 4326 | 6.863134 | 48.37632 | NA | Non | Non renseigné | Fouillé | NA | NA | Féliu 2008 n°041 | Fer; Textile | Habitat de hauteur; Site fortifié | -260:-151 | -25:476 | Production |
86 | SIT0086 | La Bure | Saint-Dié-des-Vosges | NA | 4326 | 6.937480 | 48.32626 | NA | Non | Continue | Fouillé | NA | NA | Scholtus 2014 | Bronze; Fer; Métallurgie | Habitat de hauteur; Site fortifié | -200:-151 | 301:400 | Production |
168 | SIT0169 | Butte Sainte-Geneviève | Essey-lès-Nancy | NA | 4326 | 6.226259 | 48.71639 | NA | Oui | Unique | Fouillé | NA | NA | Féliu 2008 n°040 Burnand 2003, p43. Colin 1998, p. 149-151. Dechezleprêtre 2003 | Fer | Habitat de hauteur; Indéterminé; Site fortifié | -75:-26 | -75:-26 | Production |
Comme pour la partie précédente (Section 4.4.1), plusieurs productions peuvent être renseignées dans une même cellule. Il faut donc les séparer et dupliquer les lignes concernées.
# Séparer et multiplier les rangs avec plusieurs types
<- tidyr::separate_rows(Sites_prod, Activités.artisanales, sep = ";")
Sites_prod
# Supprimer les espaces superflus en début et fin de cellules
$Activités.artisanales <- str_trim(Sites_prod$Activités.artisanales) Sites_prod
Table 48: Contenu de la colonne Activités.artisanales
Var1 | Freq |
---|---|
1019 | |
Autre | 4 |
Autre; Fer; Textile | 1 |
Bronze; Fer; Métallurgie | 1 |
Bronze; Fer; Orfévrerie; Tabletterie; Textile | 1 |
Fer | 14 |
Fer; Textile | 2 |
Métallurgie | 1 |
Textile | 1 |
Var1 | Freq |
---|---|
Autre | 4 |
Bronze | 2 |
Fer | 16 |
Métallurgie | 2 |
Orfévrerie | 1 |
Tabletterie | 1 |
Textile | 4 |
SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | COMMENTS | WEB_IMAGES | BIBLIOGRAPHY | Activités.artisanales | Type.de.site | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SIT0006 | Kegelriß | Ehrenkirchen-Ehrenstetten | NA | 4326 | 7.776640 | 47.89846 | NA | Oui | Unique | Prospecté pédestre | NA | NA | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | Fer | Dépôt; Habitat indéterminé | -150:-76 | -150:-76 | Production |
SIT0007 | Limberg | Sasbach am Kaiserstuhl | NA | 4326 | 7.603129 | 48.15083 | NA | Oui | Non renseigné | Non renseigné | NA | NA | Hofmann 1999, 101 Weber-Jenisch 1995 ArkeoGIS v3 D. Mischka 2007 Féliu 2008 | Fer | Habitat indéterminé; Site fortifié | -150:-26 | -150:-26 | Production |
SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | NA | NA | Bronze | Habitat de hauteur; Site fortifié | -150:-76 | -25:14 | Production | |
SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | NA | NA | Fer | Habitat de hauteur; Site fortifié | -150:-76 | -25:14 | Production | |
SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | NA | NA | Orfévrerie | Habitat de hauteur; Site fortifié | -150:-76 | -25:14 | Production | |
SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | NA | NA | Tabletterie | Habitat de hauteur; Site fortifié | -150:-76 | -25:14 | Production |
Comme pour les types de sites, le nombre de productions différentes décrites n’est pas si important qu’il nécessite une complète automatisation, de plus certaines entrées (comme la mention Fer) peuvent s’appliquer à plusieurs ligne du thésaurus. C’est pourquoi il semble plus simple de procéder manuellement à l’alignement. Pour toutes les activités, la colonne CARAC_LVL4 reste vide, elle n’est donc pas modifiée.
# Récupérer dans une table les différents types d'activités
<- as.data.frame(table(Sites_prod$Activités.artisanales))
prod2
# Ajouter les colonnes de caractérisation vides dans cette table
<- NA
prod2[,col]
# Pour chaque niveau de caractérisation indiquer la valeur correspondante dans ArkeoGIS
$CARAC_LVL1 <- prod2$Var1 %>%
prod2str_replace_all(c(
"Autre|Tabletterie|Textile" = "Autres",
"Bronze|Fer|Métallurgie|Orfévrerie" = "Métal"
))
$CARAC_LVL2 <- prod2$Var1 %>%
prod2str_replace_all(c(
"Autre|Tabletterie|Textile" = NA,
"Bronze|Fer|Métallurgie|Orfévrerie" = "Forge"
))
$CARAC_LVL3 <- prod2$Var1 %>%
prod2str_replace_all(c(
"Autre|Tabletterie|Textile" = NA,
"Bronze" = "Bronze",
"Fer" = "Fer",
"Métallurgie" = NA,
"Orfévrerie" = "Or"
))# supprimer la colonne Freq qui provient de la fonction table utilisée au début
<- prod2[,-2] prod2
Var1 | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 |
---|---|---|---|---|
Autre | Autres | NA | NA | NA |
Bronze | Métal | Forge | Bronze | NA |
Fer | Métal | Forge | Fer | NA |
Métallurgie | Métal | Forge | NA | NA |
Orfévrerie | Métal | Forge | Or | NA |
Tabletterie | Autres | NA | NA | NA |
Textile | Autres | NA | NA | NA |
# Ajouter les colonnes de caractéristiques pour chaque site correspondant
<- droplevels(merge(Sites_prod, prod2,
Sites_prod by.x = "Activités.artisanales",
by.y = "Var1"))
Comme précédemment, les colonnes Activités.artisanales et BIBLIOGRAPHY doivent être supprimées, tandis que la colonne CARAC_EXP est créée. Puis la table est ré-agencée selon le modèle ArkeoGIS.
# Supprimer et ajouter les colonnes nécessaires
<- Sites_prod[,-c(1, 16)]
Sites_prod $CARAC_EXP <- "Non"
Sites_prod
# Réordonner la table
<- Sites_prod[, colnames(arkeoGIS)] Sites_prod
SITE_SOURCE_ID | SITE_NAME | MAIN_CITY_NAME | GEONAME_ID | PROJECTION_SYSTEM | LONGITUDE | LATITUDE | ALTITUDE | CITY_CENTROID | OCCUPATION | STATE_OF_KNOWLEDGE | STARTING_PERIOD | ENDING_PERIOD | CARAC_NAME | CARAC_LVL1 | CARAC_LVL2 | CARAC_LVL3 | CARAC_LVL4 | CARAC_EXP | BIBLIOGRAPHY | COMMENTS | WEB_IMAGES | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | SIT0006 | Kegelriß | Ehrenkirchen-Ehrenstetten | NA | 4326 | 7.776640 | 47.89846 | NA | Oui | Unique | Prospecté pédestre | -150:-76 | -150:-76 | Production | Métal | Forge | Fer | NA | Non | Hofmann 1999, 79 Weber-Jenisch 1995, 138-139 Burkhardt 1998 Féliu 2008 | NA | NA |
8 | SIT0007 | Limberg | Sasbach am Kaiserstuhl | NA | 4326 | 7.603129 | 48.15083 | NA | Oui | Non renseigné | Non renseigné | -150:-26 | -150:-26 | Production | Métal | Forge | Fer | NA | Non | Hofmann 1999, 101 Weber-Jenisch 1995 ArkeoGIS v3 D. Mischka 2007 Féliu 2008 | NA | NA |
6 | SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | -150:-76 | -25:14 | Production | Métal | Forge | Bronze | NA | Non | NA | NA | |
10 | SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | -150:-76 | -25:14 | Production | Métal | Forge | Fer | NA | Non | NA | NA | |
25 | SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | -150:-76 | -25:14 | Production | Métal | Forge | Or | NA | Non | NA | NA | |
26 | SIT0083 | Mont-Châtel | Boviolles | NA | 4326 | 5.401720 | 48.63913 | NA | Non | Unique | Fouillé | -150:-76 | -25:14 | Production | Autres | NA | NA | NA | Non | NA | NA |
5 Assembler les données et exporter le résultats
Pour finir, les tables sites2 et Sites_prod sont ajoutées à la table total et le résultat est exporté au format csv selon les normes demandées par ArkeoGIS.
# Rassembler les différents jeux de données
<- rbind(total, sites2, Sites_prod)
total
# Exporter le résultats au format csv
write.csv2(total, "results/Scholtus_2021.csv", sep = ";", na = "",
dec = ".", row.names = F, col.names = T, fileEncoding = "UTF-8")
Avant de commencer l’import dans ArkeoGIS, il est nécessaire de vérifier que le csv corresponde bien au format demandé, en particulier pour le séparateur de décimale.
We used R version 4.2.2 (R Core Team 2022) and the following R packages: grateful v. 0.1.11 (Rodríguez-Sánchez, Jackson, et Hutchins 2022), kableExtra v. 1.3.4 (Zhu 2021), plyr v. 1.8.7 (Wickham 2011), rlist v. 0.4.6.2 (Ren 2021), rmarkdown v. 2.14 (Xie, Allaire, et Grolemund 2018; Xie, Dervieux, et Riederer 2020; Allaire et al. 2022), tidyverse v. 1.3.1 (Wickham et al. 2019).
Les références
Notes de bas de page
Correspondre à cette chronologie permettra d’afficher les données dans ArkeoGIS dans la couleur correspondant à leur datation.↩︎
Cette partie est amenée à être modifiée puisque le thésaurus est en cours de nettoyage. En particulier les mentions “Autres” sont vouées à disparaître. Pour cette raison, nous choisissons ici de ne pas aligner sur le niveau “Autres”, mais sur le précédent.↩︎