Issue with as.data.frame with labels=TRUE
Closed this issue · 4 comments
Depuis plusieurs heures, j'essaie d'utiliser la fonction as.data.frame après avoir utilisé la fonction setDSD et j'obtiens l'erreur suivante. Avez-vous une idée sur ce que je dois faire? Les données proviennent d'un organisme officiel -Statistique Canada. J'ai mis le fichier zip de provenance en fichier joint. Si vous avez quelques minutes pour m'aider, j'apprécierais beaucoup. Merci.
Après avoir dézipper les deux fichiers pour lire la structure et les données, j'utilise la fonction
setDSD et ça marche. C'est quand je tente de transformer ce fichier en data.frame en voulant voir
les labels (ce qui est nécessaire), c'est ici que ça plante.
dsd <- readSDMX(file.choose(), isURL=FALSE) #petit fichier, dit structure
data <- readSDMX(file.choose(), isURL = FALSE) #gros fichier, dit généric
#associate the DSD to the dataset
data <- setDSD(data,dsd)
#because you associated the DSD, you can now apply labels = TRUE
df <- as.data.frame(data, labels = TRUE)
Error in as.data.frame.SDMXCodelists(slot(dsd, "codelists"), codelistId = clName) :
trying to get slot "Code" from an object of a basic class ("NULL") with no slots
Hello @jhguay I had a look carefully, apparently something is wrong in the DSD from Statistics Canada, as they report as component a codelist for a column ( NB_DECIMALS) while it doesn't correspond to a codelist, hence the error catched by rsdmx where it expects to fetch a non-existing codelist. I've added some double check in case this disrepancy occurs in the datasource.
You can test it but you will need to use the modified package from Github.
To reinstall the package from Github, you need devtools
package, then run this:
library(devtools)
install_github("opensdmx/rsdmx")
library(rsdmx)
let me know if it works for you,
Best regards,
Emmanuel
Fantastic, it works very well. Quick modification in addition. Thank you very much.
Great! if rsdmx is of added value for you, i'd be grateful if you woul star it in github. Best regards