Comment supprimer la première ligne d’un dataframe dans R?

J’ai un jeu de données avec 11 colonnes avec plus de 1000 lignes chacune. Les colonnes étaient étiquetées V1, V2, V11, etc. J’ai remplacé les noms par quelque chose de plus utile en utilisant la commande “c”. Je n’ai pas réalisé que la ligne 1 contenait également des étiquettes pour chaque colonne et mes données réelles commencent à la ligne 2.

Existe-t-il un moyen de supprimer la ligne 1 et de décrémenter?

Gardez les étiquettes de votre fichier d’origine comme ceci:

df = read.table('data.txt', header = T) 

Si vous avez des colonnes nommées x et y, vous pouvez les adresser comme ceci:

 df$x df$y 

Si vous souhaitez réellement supprimer la première ligne d’un data.frame, vous pouvez utiliser des index négatifs tels que:

 df = df[-1,] 

Si vous souhaitez supprimer une colonne d’un data.frame, vous pouvez lui atsortingbuer la valeur NULL:

 df$x = NULL 

Voici quelques exemples simples de création et de manipulation d’un data.frame en R:

 # create a data.frame with 10 rows > x = rnorm(10) > y = runif(10) > df = data.frame( x, y ) # write it to a file > write.table( df, 'test.txt', row.names = F, quote = F ) # read a data.frame from a file: > read.table( df, 'test.txt', header = T ) > df$x [1] -0.95343778 -0.63098637 -1.30646529 1.38906143 0.51703237 -0.02246754 [7] 0.20583548 0.21530721 0.69087460 2.30610998 > df$y [1] 0.66658148 0.15355851 0.60098886 0.14284576 0.20408723 0.58271061 [7] 0.05170994 0.83627336 0.76713317 0.95052671 > df$x = x > df yx 1 0.66658148 -0.95343778 2 0.15355851 -0.63098637 3 0.60098886 -1.30646529 4 0.14284576 1.38906143 5 0.20408723 0.51703237 6 0.58271061 -0.02246754 7 0.05170994 0.20583548 8 0.83627336 0.21530721 9 0.76713317 0.69087460 10 0.95052671 2.30610998 > df[-1,] yx 2 0.15355851 -0.63098637 3 0.60098886 -1.30646529 4 0.14284576 1.38906143 5 0.20408723 0.51703237 6 0.58271061 -0.02246754 7 0.05170994 0.20583548 8 0.83627336 0.21530721 9 0.76713317 0.69087460 10 0.95052671 2.30610998 > df$x = NULL > df y 1 0.66658148 2 0.15355851 3 0.60098886 4 0.14284576 5 0.20408723 6 0.58271061 7 0.05170994 8 0.83627336 9 0.76713317 10 0.95052671 

Vous pouvez utiliser l’indexation négative pour supprimer des lignes, par exemple:

 dat <- dat[-1, ] 

Voici un exemple:

 > dat <- data.frame(A = 1:3, B = 1:3) > dat[-1, ] AB 2 2 2 3 3 3 > dat2 <- dat[-1, ] > dat2 AB 2 2 2 3 3 3 

Cela dit, il est possible que vous ayez plus de problèmes que de simplement supprimer les étiquettes qui se sont retrouvées sur la ligne 1. Il est plus que probable que R a interprété les données sous forme de texte et les a ensuite converties en facteurs. Vérifiez ce que str(foo) , où foo est votre object de données, dit à propos des types de données.

Il semble que vous ayez besoin d'en- header = TRUE dans votre appel pour lire les données (en supposant que vous les lisiez via read.table() ou l'un de ses wrappers.)

Personne ne veut probablement vraiment supprimer la première ligne. Donc, si vous cherchez quelque chose de significatif, c’est la sélection conditionnelle

 #remove rows that have long length and "0" value for vector E >> setNew<-set[!(set$length=="long" & set$E==0),] 

dat <- dat[-1, ] fonctionné mais il a tué mon dataframe en le transformant en un autre type. A dû utiliser à la place dat <- data.frame(dat[-1, ]) mais c'est peut-être un cas particulier car ce dataframe ne comportait initialement qu'une colonne.

Je ne suis pas expert, mais cela peut aussi fonctionner,

 dat <- dat[2:nrow(dat), ] 

Bien que je sois d’accord avec la réponse la plus votée, voici une autre façon de conserver toutes les lignes sauf la première:

 dat <- tail(dat, -1) 

Cela peut également être accompli en utilisant le package dplyr Hadley Wickham.

 dat <- dat %>% slice(-1)