J'ai un fichier CSV avec deux lignes d'en-tête, la première ligne que je veux être l'en-tête, mais la deuxième ligne que je veux ignorer. Si je fais la commande suivante:
data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE)
La première ligne devient l'en-tête et la deuxième ligne du fichier devient la première ligne de mon cadre de données:
Xaaaaaaaaa X X.1 Xbbbbbbbbbb X.2 X.3
1 Date PX_LAST NA Date PX_LAST NA
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA
Je veux sauter cette deuxième ligne du fichier CSV et juste obtenir
X1.HK.Equity X X.1 X2.HK.Equity X.2 X.3
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA
J'ai essayé data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE, skip = 1)
mais cela retourne:
Date PX_LAST X Date.1 PX_LAST.1 X.1
1 31/12/2002 38.855 NA 31/12/2002 19.547 NA
2 02/01/2003 38.664 NA 02/01/2003 19.547 NA
3 03/01/2003 40.386 NA 03/01/2003 19.547 NA
4 06/01/2003 40.386 NA 06/01/2003 19.609 NA
5 07/01/2003 40.195 NA 07/01/2003 19.609 NA
6 08/01/2003 40.386 NA 08/01/2003 19.547 NA
La ligne d'en-tête provient de la deuxième ligne de mon fichier CSV, pas de la première ligne.
Je vous remercie.
Cela devrait faire l'affaire:
all_content = readLines("file.csv")
skip_second = all_content[-2]
dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE)
La première étape, à l'aide de readLines
, lit le fichier entier dans une liste, chaque élément de la liste représentant une ligne du fichier. Ensuite, vous supprimez la deuxième ligne en utilisant le fait que l'indexation négative dans R signifie select all but this index
. Enfin, nous transmettons ces données à read.csv
pour les traiter en un data.frame
.
Vous pouvez supprimer la ou les premières lignes après l'en-tête directement du dataframe, pour vous permettre de le faire en une seule ligne:
df<-read.csv("test.txt",header=T)[-1,]
si mon fichier de données "test.txt" est le suivant:
var1, var2
units1, units2
2.3,6.8
4.5,6.7
cela me donne
> read.csv("test.txt",header=T)[-1,]
var1 var2
2 2.3 6.8
3 4.5 6.7
Cela répond exactement à votre question, mais pour généraliser, vous pouvez également ignorer les lignesNà laMth:
df<-read.csv("test.txt",header=T)[-N:-M,]
où N et M sont des nombres entiers bien sûr.
Remarque: Cette méthode convertira toutes les colonnes en facteur.
str(read.csv("test.csv", header = TRUE)[-1,])
# 'data.frame': 2 obs. of 2 variables:
# $ var1: Factor w/ 3 levels "2.3","4.5","units1": 1 2
# $ var2: Factor w/ 3 levels " units2","6.7",..: 3 2
Sous Linux (ou Mac), vous pouvez utiliser les commandes linux dans data.table::fread
, donc
data.table::fread("sed -e '2d' myfile.txt", data.table = F)
passera la deuxième ligne.