Kopier variabelmetadata mellom DataDoc-filer
copy_metadata_variable.RdKopierer metadata for én eller flere variabler fra en original DataDoc-fil til en annen DataDoc-fil.
Arguments
- filsti_datadoc_egen
En tekststreng med filstien til DataDoc-filen som skal oppdateres, eller til den tilhørende Parquet-filen. Filstien må slutte på
.jsoneller.parquet.- filsti_datadoc_original
En tekststreng med filstien til DataDoc-filen som metadataene skal kopieres fra, eller til den tilhørende Parquet-filen. Filstien må slutte på
.jsoneller.parquet.- variabler
En tekstvektor som angir hvilke variabler metadata skal kopieres for. En unavngitt verdi tolkes som at variabelen har samme
short_namei begge filer. I en navngitt vektor angir navnetshort_namei filen som skal oppdateres, mens verdien angirshort_namei originalfilen.
Value
Den oppdaterte DataDoc-strukturen som en liste. Den oppdaterte
strukturen skrives samtidig til DataDoc-filen som svarer til
filsti_datadoc_egen.
Details
Filstiene kan oppgis enten som filstier til DataDoc-filer med
filendelsen .json, eller som filstier til Parquet-filer med
filendelsen .parquet. Parquet-filstier konverteres automatisk til
tilhørende DataDoc-filstier med datadoc_path().
Hele metadataobjektet for hver valgt variabel erstattes. Variabelens
short_name beholdes imidlertid slik det er angitt i DataDoc-filen
som metadataene kopieres til.
Dersom en filsti slutter på .parquet, erstattes filendelsen med
__DOC.json ved hjelp av datadoc_path(). Filstier som allerede
slutter på .json, brukes uendret.
De endelige JSON-filstiene skrives ut før filene leses. Funksjonen stopper med en feilmelding dersom én eller begge DataDoc-filene ikke finnes. Alle manglende filer oppgis i samme feilmelding.
Begge DataDoc-filene leses med jsonlite::fromJSON() med
simplifyVector = FALSE.
For hver valgt variabel kopieres hele elementet fra
datadoc$variables i originalfilen til den tilsvarende variabelen i
filen som skal oppdateres. Feltet short_name erstattes deretter med
variabelnavnet som brukes i mottakerfilen.
Følgende kontroller utføres før filen endres:
filstiene må være ikke-tomme tekststrenger som slutter på
.jsoneller.parquet;begge DataDoc-filene må finnes;
variablermå være en ikke-tom tekstvektor;samme variabel i mottakerfilen kan ikke oppgis flere ganger;
short_namemå være unik i begge DataDoc-filene; ogalle oppgitte variabler må finnes i de respektive filene.
Den oppdaterte DataDoc-strukturen skrives tilbake med
jsonlite::write_json(). Den eksisterende DataDoc-filen som svarer
til filsti_datadoc_egen, overskrives.
See also
datadoc_path() for å opprette en DataDoc-filsti fra en
Parquet-filsti, jsonlite::fromJSON() for å lese DataDoc-filene og
jsonlite::write_json() for å skrive den oppdaterte filen.
Examples
if (FALSE) { # \dontrun{
# Oppgi Parquet-filstier
copy_metadata_variable(
filsti_datadoc_egen = "/buckets/data/egen_v1.parquet",
filsti_datadoc_original = "/buckets/data/original_v1.parquet",
variabler = c("kjoenn", "alder")
)
# Oppgi DataDoc-filstier
copy_metadata_variable(
filsti_datadoc_egen = "/buckets/data/egen__DOC.json",
filsti_datadoc_original = "/buckets/data/original__DOC.json",
variabler = c(kjoenn = "sex")
)
# Kombiner Parquet- og DataDoc-filsti
copy_metadata_variable(
filsti_datadoc_egen = "/buckets/data/egen.parquet",
filsti_datadoc_original = "/buckets/data/original__DOC.json",
variabler = c(
kjoenn = "sex",
"alder"
)
)
} # }