8
votes

R: Trouvez des colonnes manquantes, ajouter au cadre de données s'il manque

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")

r

0 commentaires

3 Réponses :


22
votes

Voici une approche simple xxx


2 commentaires

Vous pouvez également utiliser manquant <- SetDiff (NMS, noms (DF)) 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!



1
votes
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

0 commentaires

0
votes

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). xxx


0 commentaires