Muchas veces no queremos modificar los datos directamente en los campos (columnas) en que se presentan, dado que queremos mantener los valores originales y/o queremos proveer información adicional basada en ciertos campos. Por ejemplo, podríamos tener como campos individuales el género y el epíteto específico y queremos agregar el campo nombre científico como concatenación de los dos; o viceversa: tenemos un único campo nombre científico y queremos proveer ese campo y otros dos campos para género y epíteto, a partir de la división del anterior pero sin perderlo.
Para estos casos es útil crear nuevos campos en nuevas columnas.
Veamos primero algunas funciones básicas que se pueden aplicar sobre los campos:
-
Renombrar un campo.
Hacer click en "la ▼ azul del campo > Editar columnas > Renombrar esta columna"
-
Eliminar un campo.
Hacer click en "la ▼ azul del campo > Editar columnas > Eliminar esta columna"
-
Mover un campo.
Hacer click en "la ▼ azul del campo > Editar columnas > Mover columna al principio"
… "la ▼ azul del campo > Editar columnas > Mover columna al final"
… "la ▼ azul del campo > Editar columnas > Mover columna a la izquierda"
… "la ▼ azul del campo > Editar columnas > Mover columna a la derecha"
Estas tres opciones pueden verse en la Figura 7.
-
Reordenar o eliminar varios campos a la vez.
Hacer click en "la ▼ azul en el campo “Todo” > Editar columnas > Ordenar / Eliminar columnas…" (Figura 8a).
Se abrirá entonces una ventana como la que se muestra en la Figura 8b. Allí puede ordenar los campos simplemente arrastrándolos arriba o abajo en la lista, y eliminarlos arrastrándolos hacia la parte derecha de la ventana. Una vez que termine de modificar el orden de los campos, haga click en “Aceptar”.
En OpenRefine se considera que cualquiera de los cuatro cambios descriptos anteriormente son cambios a los datos, y por ende se registran como tales en el historial de cambios (Ver más abajo sección Deshacer y rehacer cambios).
Se pueden crear nuevos campos en base a cero, uno o más campos preexistentes.
Para crear un nuevo campo de cero, sobre cualquier columna preexistente siga la ruta:
"Editar columnas > Agregar columna basada en esta columna…"
Se abrirá una ventana como la que se muestra en la Figura 9.
Arriba de todo, coloque el nombre del nuevo campo.
Important
|
Debe tener extremo cuidado al escoger los nombres que dará a las nuevas columnas. Considere que el nombre sea indicativo de lo que contiene (e.g., no le ponga “Columna 1” o “Transformación 3”). OpenRefine no le dejará utilizar nombres que ya hayan sido utilizados para nombrar otros campos dentro del proyecto. Considere qué otros campos tiene en su base de datos original y no utilice nombres que ya hayan sido utilizados, se evitará así importar datos a columnas equivocadas al volver a su base de datos. |
Luego, en el cuadro de texto “Expresión” escriba: null
. Ello quiere decir que se creará un campo con valores nulos. Luego oprima “Aceptar”. Alternativamente, en vez de null
puede colocar la expresión: ""
, y el nuevo campo tendrá valores en blanco.
El nuevo campo, con el nombre que le haya dado, aparecerá a la derecha de aquel a partir del cual fue generado.
Important
|
Tenga en cuenta que las columnas nuevas que cree en la aplicación no estarán en su base de datos original. Al importar nuevamente los datos que han sido limpiados a su base de datos, dependiendo de cómo esté estructurada esa base de datos, es posible que estas nuevas columnas no sean importadas o que reciba un mensaje de error de importación porque el número de campos del archivo no coincide con el de la base de datos. En estos casos, debe asegurarse de agregar los nuevos campos en su base de datos si desea importar todos los campos nuevos. |
Veamos ahora cómo crear nuevas columnas con datos modificados a partir de columnas preexistentes.
Si desea crear un campo que sea la concatenación de otros dos campos separados, siga la siguiente ruta:
Utilizaremos como ejemplo la concatenación de los campos "genus"
y "specificEpithet"
.
Click en menu:la ▼ azul del campo {genus}[Editar columnas > Agregar columna basada en esta columna…]
Se abrirá una nueva ventana (Figura 10). Puede llamar al nuevo campo “concat_scientificName”, para indicar que se trata de la concatenación (note que ya hay un campo "scientificName"
en los datos).
En el cuadro de texto, pegue la siguiente expresión:
Expresión ejemplo: cells["genus"].value + " " + cells["specificEpithet"].value
Expresión general: cells["campo1"].value + " " + cells["campo2"].value
La expresión ejemplo concatena (+
) los valores del campo "genus"
(cells["genus"].value
) y los del campo "specificEpithet"
(cells["specificEpithet"].value
), con un espacio entre los valores ("
").
Note que esta expresión funciona cuando ambos campos, "genus"
y "specificEpithet"
, tienen valores, es decir no son nulos. Si alguno de los dos campos tiene valores nulos, entonces no se lleva a cabo la concatenación. Por ejemplo, si hay un valor para genus pero specificEpithet está vacío, el campo de concatenación aparecerá vacío. Esto se debe a que no se puede operar sobre valores nulos.
En este caso, puede sortear el problema utilizando en cambio la siguiente expresión:
if(isBlank(cells["genus"].value), "", cells["genus"].value) + " " + if(isBlank(cells["specificEpithet"].value), "", cells["specificEpithet"].value)
Lo que dicha expresión significa es: concatenar (`) dos partes, cada una proviene de una sub-expresión [source]`if`, separadas por un espacio ([source]` " " +
). Cada una de estas sub-expresiones indica: si (if
) el valor del campo dado es nulo (isBlank(cells["genus"].value)
), colocar un blanco (""
), si no (,
), colocar el valor del campo (cells["genus"].value
). La otra sub-expresión es lo mismo pero para epíteto específico.
Los resultados esperados utilizando cada una de las dos fórmulas se resumen en la siguiente tabla:
Expresión | genus | specificEpithet | concat_scientificName |
---|---|---|---|
1 |
Filago |
lasiocarpa |
Filago lasiocarpa |
Filago |
null |
null |
|
null |
lasiocarpa |
null |
|
2 |
Filago |
lasiocarpa |
Filago lasiocarpa |
Filago |
null |
Filago |
|
null |
lasiocarpa |
lasiocarpa |
Note
|
Para evitar de modo más general este problema de celdas nulas, cuando importa el conjunto de datos para crear su proyecto al principio del proceso, puede asegurarse de NO seleccionar la opción “Store blank cells as nulls” (ver Figura 4). |
Si desea crear campos separados a partir de los valores en un único campo, siga la siguiente ruta:
Utilizaremos como ejemplo la división del campo "eventDate"
para agregar tres campos: año, mes y día (year, month y day)
Click en menu:la ▼ azul del campo {eventDate}[Editar columnas > Dividir en varias columnas…]
Se abrirá una nueva ventana (Figura 11). Allí debe escoger si se dividirá por separador o por longitud de caracteres, y en el primer caso qué tipo de separador se utilizará (puede ser espacio –tab-, coma, punto y coma, guión, etc.).
En este caso, si exploramos los datos del campo original veremos que año, mes y día están separados por barras oblicuas (“/”), de modo que elegiremos esta barra como separador.
Important
|
Desmarque la opción “Eliminar esta columna” a la derecha. Si la deja seleccionada, perderá el campo original y sólo tendrá los tres nuevos campos. |
Una vez que oprima Aceptar, se crearán las nuevas columnas a la derecha del campo "eventDate"
. OpenRefine las nombra automáticamente agregando números al final del nombre (en este caso: eventDate1, eventDate2 y eventDate3). Cambie los nombres de las columnas por los que corresponda ("la ▼ azul > Editar columnas > Renombrar esta columna"). En este caso, nómbrelos “year”, “month” y “day” según corresponda.
Important
|
Cuando efectúe este tipo de divisiones de campos utilizando como criterio o bien separadores o bien longitud de caracteres, asegúrese de que en el campo original no haya distintos formatos para diferentes registros. Vea el siguiente ejemplo: Se quiere separar un campo nombrado “coordenadas” que contiene datos de latitud y longitud separados por coma, del tipo: “-32.04588990, -54.98789901”, para obtener dos campos distintos, latitud y longitud. Si todos los campos tienen el mismo formato, obtendrá dos campos nuevos de la siguiente forma:
En cambio, si en algún registro los valores dentro del campo coordenadas no están en formato decimal, entonces tendrá problemas al dividir el campo. Suponga como ejemplo que uno o más registros tienen valores con formato “34° 20’ 15,2’’ S, 54° 49’ 13’’ O”. En ese caso, la separación le dará 3 campos en vez de dos, con la latitud incorrectamente separada:
|