2017-09-29 2 views
0

J'ai reçu un vidage de données d'un catalogue de bibliothèque, il est sorti au format .txt. J'ai été en mesure d'obtenir les données dans une feuille de calcul, mais tout est dans une colonne. Je voudrais transposer les rangées en colonnes.Openrefine - Transpose les lignes en colonnes en fonction du texte

Les données sont dans cette colonne dans l'ordre suivant: Titre Type de document Auteur Date de

Mais dans certains cas, les notices de catalogue apparaissent dans l'ordre: Titre Type de document Synopsis Auteur Date

Par conséquent, je ne peux pas transposer ces enregistrements en colonnes en fonction du nombre de lignes.

Chaque titre porte le mot "Description" en avant. C'est la caractéristique régulière dans tout le jeu de données.

Existe-t-il un moyen d'utiliser OpenRefine pour transposer des lignes en colonnes en fonction du texte d'une colonne? Transposer x lignes après la ligne contenant "Description" jusqu'à l'instance suivante du mot "Description"?

+0

Pouvez-vous fournir un échantillon minimal de vos données, quelque chose que nous pouvons importer directement dans Open Affiner afin de faire quelques tests? –

+1

Bonjour @phillip. Si la réponse d'Owen est juste, et je pense que c'est le cas, pourriez-vous l'accepter? Merci ! –

Répondre

2

L'approche que je vous suggère est de regrouper vos lignes dans « dossiers » openrefine - J'approche cela comme suit:

  • importer les données dans openrefine comme il est
  • Ecrire un « custom texte facette » avec le GREL value.startsWith("Description")
  • Sélectionnez les lignes pour lesquelles cette facette montre de véritables" - cela devrait vous donner toutes les lignes contenant les titres
  • Toujours avec ce choix de facette appliquée, utilisez « colonne ajouter en fonction de cette colonne » ajouter une nouvelle colonne qui contient juste le titre s
  • Déplacer cette nouvelle colonne au début (à gauche) de votre projet
  • Passer au mode 'Records

Vous devriez voir maintenant que vous avez un seul enregistrement pour chaque ensemble de lignes qui se rapportent au même titre. Vous pouvez maintenant utiliser l'option "Joindre des cellules multi-valuées" pour obtenir le titre, le type de document, le synopsis (s'il existe), l'auteur et la date dans une seule cellule

Maintenant, utilisez 'scinder en plusieurs colonnes' pour diviser les valeurs à travers les colonnes

Vous devriez maintenant avoir une ligne par titre. Vous aurez encore un peu de travail à faire car les données dans les lignes où il y a un synopsis seront décalées de un par rapport aux lignes où il n'y a pas de synopsis. Pour résoudre ce problème, je suggère une «facette par blanc» dans la dernière colonne - les lignes non synoptiques doivent être vides dans la dernière colonne car il y a un peu moins de données.

Vous pouvez ensuite utiliser des transformations pour décaler les valeurs entre les colonnes une par une (en commençant par la colonne vide, sinon vous écraserez les données).

Espérons que tout a un sens.Si vous publiez quelques exemples de données Ettore suggère alors que je pouvais faire un casting d'écran pour illustrer

Owen