2017-07-28 7 views
-1

J'ai un dossier avec 396 fichiers CSV. Les premières 25 lignes de chaque fichier csv sont les mêmes et donc je veux les ignorer. Ensuite, la 26ème rangée est la ligne d'en-tête que je veux garder. Le problème est que l'information qui m'intéresse commence dans différentes lignes dans les fichiers csv.Certains commencent à la ligne 48, d'autres à 36, 32 ... etc. Je veux sauter les lignes après mon en-tête à la début de la ligne de l'information nécessaire. Existe-t-il un moyen d'ignorer les 25 premières lignes, de conserver la ligne d'en-tête (26e) et de l'automatiser de sorte que R ignore les lignes après mon en-tête jusqu'à ce qu'il voit la ligne start avec les informations.Importer plusieurs fichiers CSV dans R mais ignorer les 25 premières lignes et ignorer le nombre de lignes différent après cela

De plus, une fois que j'atteins la ligne que je veux, les valeurs sont représentées tous les deux rangs ou sur 2 autres lignes. Y a-t-il un moyen de résoudre ce problème puisqu'il n'est pas cohérent?

Exemple:

1. Name 
2.... 
. 
. 
25... 
26.Header 
27.... 
. 
. 
32/41/etc 12/04/2015 13:49 4  6 

Je ne suis pas sûr de ce code à utiliser mais je commencé à penser à l'aide de ce code:

files<-list.files("filepath",pattern="*csv", full.names=T) 
names(files)<-files 
headers = read.csv(files, skip = 1:25, header = F, as.is = T) 


edata <- do.call(rbind, lapply(files, read_csv)) 

Je ne sais pas comment gérer sauter problème dans le do. appel.

Est-ce que quelqu'un a rencontré un problème similaire et comment l'avez-vous résolu?

Merci.

+0

Veuillez lire [mcve]. –

+0

Besoin de plus d'explications. Vous pouvez ignorer les 25 premières lignes avec 'skip = 25'. Ensuite, y a-t-il un motif dans les lignes que vous voulez garder? Les lignes que vous voulez supprimer sont-elles simplement des valeurs manquantes? Juste, copiez un exemple réel de vos données –

+0

je suis d'accord. Utilisez juste 'skip = 25', puis supprimez les lignes vides .... – pyll

Répondre

0
# First skip the 25 lines 
data = read.csv(file, skip = 25, header = T) 

# Then remove all other empty rows 
data[rowSums(is.na(data)) != ncol(data),]