Deze website maakt gebruik van cookies

Deze website toont video’s van YouTube. Deze partij plaatst cookies (third party cookies). Als je deze cookies niet wilt, dan kan je dat hier aangeven. Je kan dan geen video’s op deze website zien. Wij plaatsen zelf ook anonieme cookies om onze site te verbeteren. Deze gegevens worden niet aan derden verstrekt.

Deze website toont video’s van YouTube. Deze partij plaatst cookies (third party cookies). Als je deze cookies niet wilt, dan kan je dat hier aangeven. Je kan dan geen video’s op deze website zien.

Online cursus OpenRefine

11. Arrays of reeksen

Een ‘Array’ is een lijst of reeks met waarden, weergegeven door het gebruik van vierkante haken,  omgeven door aanhalingstekens en gescheiden door komma's. Een array of reeks met de dagen van de week ziet er bijvoorbeeld als volgt uit:

[“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”,”Sunday”]

[“Maandag”,”Dinsdag”,”Woensdag”,”Donderdag”,”Vrijdag”,”Zaterdag”,”Zondag”]

Arrays kunnen worden gesorteerd, gedupliceerd en op andere manieren worden gemanipuleerd in GREL-formules, maar zijn niet rechtstreeks in een OpenRefine-cel te zien. Reeksen in OpenRefine zijn meestal het resultaat van een transformatie. De splitfunctie neemt bijvoorbeeld een 'string', een stukje tekst, en verandert deze in een reeks op basis van een scheidingteken. Als een cel bijvoorbeeld de waarde heeft:

"maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag, zondag"

Dit kan worden omgezet in een reeks met behulp van de splitfunctie

value.split (",")

Dit zou de reeks met de dagen van de week creëren:

["maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"]

Dit kan worden gecombineerd met reeksbewerkingen zoals sorteren. Ervan uitgaande dat de cel dezelfde waarde bevat als hierboven, dan zou de formule

value.split(",").sort ()

zou resulteren in een reeks met de dagen van de week in alfabetische volgorde gesorteerd:

["vrijdag","maandag","zaterdag", zondag","donderdag","dinsdag","woensdag"]

Om een ​​waarde uit een reeks te filteren, kun je een specifieke waarde selecteren, afhankelijk van de positie in de lijst (waarbij de eerste positie wordt behandeld als 'nul'). Bijvoorbeeld

value.split (",")[0]

zou de eerste waarde uitfilteren uit de reeks die door de splitfunctie is gemaakt. In het bovenstaande voorbeeld zou dit "maandag" zijn

Je kunt ook reeksen samenvoegen om een ​​‘String’ , een stukje tekst, te maken. De GREL-formule zou er als volgt uitzien:

value.split(",").sort().join(",")

Als we het bovenstaande voorbeeld nogmaals nemen, zou dit resulteren in een reeks met de dagen van de week in alfabetische volgorde, met komma's tussen elke dag.

 

Opdracht 13: Omgekeerde auteursnamen

Misschien heb je de booleaanse oefening al gedaan in het vorige hoofdstuk en heb je een facet met de namen in volgorde van voornaam, achternaam.

Selecteer in dit geval het 'True-facet en begin met stap 6 in de oefening.

In deze oefening gaan we zowel de gegevenstypen Boolean als Reeks (Array) gebruiken. Als je naar de kolom Authors kijkt, zie je dat de meeste auteursnamen in de natuurlijke volgorde zijn geschreven. Een paar zijn echter omgedraaid waarbij de achternaam als eerste wordt genoemd.

We kunnen een ruwe test uitvoeren voor omgekeerde auteursnamen door te zoeken naar namen die een komma bevatten:

  1. Zorg ervoor dat je de auteursnamen al in afzonderlijke cellen hebt opgesplitst met behulp van Edit cells->Split multi-valued cells
  2. Gebruik in de kolom Authors het vervolgkeuzemenu en selecteer Facet->Custom text facet...
  3. Met de Custom text facet function kun je GREL-formules schrijven om een ​​facet te maken
  4. Typ in het vak Expressions: value.contains(",").toString()
  5. Klik OK.  Aangezien de functie ‘contains’ een Booleaanse waarde oplevert, zou je een facet moeten zien met ‘false’ en ‘true’. True = waarden die een komma bevatten; false = waarden zonder komma.
  6. 6.Selecteer in dit facet ‘true’ om je te beperken tot de auteursnamen die een komma bevatten. Nu we ons hebben beperkt tot de regels met een komma in een naam, kunnen we de match functie gebruiken.
  7. 7. Gebruik in de kolom Authors het vervolgkeuzemenu en selecteer Edit cells->Transform
  8. 8. Typ in het vak Expressions: value.match(/(.*),(.*)/)

De / betekent dat je een reguliere formule gebruikt binnen een GREL-formule. De haakjes geven aan dat je een groep tekens gaat matchen. Het sterretje *  komt overeen met tekens die 0, 1 of meer keer voorkomen. Dus hier matchen we een willekeurig aantal karakters, een komma en een andere set van een willekeurig aantal karakters.

  1. Kijk hoe dit een reeks creëert met twee leden in elke rij in de kolom Preview

Om de auteursnaam in de natuurlijke volgorde (voornaam achternaam) te krijgen, kun je de reeks omkeren en weer samenvoegen met een spatie:

  1. Typ nu in : value.match(/(.*),(.*)/).reverse ().join(" ")
  2. In de voorbeeldweergave zou je moeten kunnen zien dat dit de reeks heeft omgedraaid en weer tot een string (tekst) heeft samengevoegd
  3. Klik OK

Klik hier voor het laatst hoofdstuk>

 

Bron: licentie CC-BY 4.0 2016–2020 by Library Carpentry

Was deze tip interessant?

Geef hier jouw feedback of deze tip interessant is geweest voor jou.

Vertel ons waarom je deze tip niet interessant vond.

Misschien vind je dit ook interessant

Voor vrijwilligers in Zuid-Holland

Het platform ZelfDoen in Zuid-Holland is er voor vrijwilligers in groen en erfgoed. Vrijwilligersgroepen en organisaties kunnen op het platform vacatures, cursussen en andere activiteiten aanbieden.

Om deze pagina op te slaan moet je ingelogd zijn.

Wil je nu inloggen?

Nee

Om gereedschap te kunnen lenen moet je ingelogd zijn.

Wil je nu inloggen?

Nee

Om gereedschap te kunnen lenen moet je eerst een datum kiezen

Wil je nu een datum kiezen?

Nee