lire.csv, en-tête sur la première ligne, passez deuxième ligne
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 jeter. 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 bloc 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 passer 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 qui renvoie:
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 vient de la deuxième ligne de mon fichier CSV, pas la première ligne.
je vous Remercie.
2 réponses
Ceci 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 en utilisant readLines
lit tout le fichier dans une liste où chaque élément dans la liste représente une ligne dans le fichier. Ensuite, vous écartez la deuxième ligne en utilisant le fait que l'indexation négative dans R signifie select all but this index
. Enfin, nous nourrir de ces données à read.csv
pour le traiter dans un data.frame
.
vous pouvez retirer la première ligne(S) après l'en-tête directement de la dataframe, pour vous permettre de le faire en une seule ligne:
df<-read.csv("test.txt",header=T)[-1,]
si mon fichier "test.txt" est la suivante:
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 juste pour généraliser la réponse, vous pouvez également sauter le Nème Mth lignes de cette façon:
df<-read.csv("test.txt",header=T)[-N:-M,]
Où N et M sont des nombres entiers de cours.
Remarque: cette méthode convertit 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