J'aimerais écrire du code qui prendrait une trame de données donnée, vérifiez si des colonnes manquent, et dans l'affirmative, ajoutez les colonnes manquantes remplies de 0 ou de Na. Voici ce que j'ai:
> df
x1 x2 x4
1 0 1 3
2 3 1 3
3 1 2 1
> nameslist <- c("x1","x2","x3","x4")
> miss.names <- !nameslist %in% colnames(df)
> holder <- rbind(nameslist,miss.names)
> miss.cols <- subset(holder[1,], holder[2,] == "TRUE")
3 Réponses :
Voici une approche simple
Vous pouvez également utiliser manquant <- SetDiff (NMS, noms (DF)) CODE> qui est légèrement plus transparent.
@Hongooi - bonne suggestion. C'est beaucoup plus agréable et j'ai édité la réponse pour l'inclure. Merci!
library(stringr)
df <- data.frame(X1=1:4,X2=1:4,X5=1:4)
>df
X1 X2 X5
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
current <- as.numeric(str_extract(names(df),"[0-9]"))
missing <-seq(min(current),max(current))
df[paste("X",missing[!missing %in% current],sep="")]<-0
>df[,order(colnames(df))]
X1 X2 X3 X4 X5
1 1 1 0 0 1
2 2 2 0 0 2
3 3 3 0 0 3
4 4 4 0 0 4
Merci gars, grâce à vous, j'ai réussi à faire cela avec une liste de fichiers de données (fichiers) et une autre liste de colnames (ncolunas).