Similar a como se seleccionan filas en un data.frame, en un objeto data.table se pueden seleccionar filas utilizando rangos de índices. En los siguientes dos ejemplos se muestra como seleccionar las primeras dos filas de la tabla de registros.
gbifID occurrenceID phylum class order family genus
<i64> <char> <char> <char> <char> <char> <char>
1: 2825623524 TAIF:PLANT:318128:1:1:411555 Tracheophyta Polypodiopsida Polypodiales Pteridaceae Adiantum
2: 2825649445 TAIF:PLANT:318579:1:1:411579 Tracheophyta Polypodiopsida Polypodiales Pteridaceae Scoliosorus
species infraspecificEpithet taxonRank scientificName
<char> <char> <char> <char>
1: Adiantum andicola SPECIES Adiantum andicola Liebm.
2: Scoliosorus ensiformis SPECIES Scoliosorus ensiformis (Hook.) T.Moore
verbatimScientificName verbatimScientificNameAuthorship countryCode stateProvince
<char> <lgcl> <char> <char>
1: Adiantum andicola Liebm. NA MX Oaxaca (瓦哈卡州)
2: Scoliosorus ensiformis (Hook.) T. Moore NA MX Oaxaca (瓦哈卡州)
decimalLatitude decimalLongitude coordinateUncertaintyInMeters elevation day month year basisOfRecord
<num> <num> <lgcl> <int> <int> <int> <int> <char>
1: 17.30213 -96.3808 NA 2267 27 2 2012 PRESERVED_SPECIMEN
2: 17.30213 -96.3808 NA 2267 27 2 2012 PRESERVED_SPECIMEN
Nota: Cuando solo estamos seleccionando filas no es necesario incluir la coma al final.
data[1:2,]
gbifID occurrenceID phylum class order family genus
<i64> <char> <char> <char> <char> <char> <char>
1: 2825623524 TAIF:PLANT:318128:1:1:411555 Tracheophyta Polypodiopsida Polypodiales Pteridaceae Adiantum
2: 2825649445 TAIF:PLANT:318579:1:1:411579 Tracheophyta Polypodiopsida Polypodiales Pteridaceae Scoliosorus
species infraspecificEpithet taxonRank scientificName
<char> <char> <char> <char>
1: Adiantum andicola SPECIES Adiantum andicola Liebm.
2: Scoliosorus ensiformis SPECIES Scoliosorus ensiformis (Hook.) T.Moore
verbatimScientificName verbatimScientificNameAuthorship countryCode stateProvince
<char> <lgcl> <char> <char>
1: Adiantum andicola Liebm. NA MX Oaxaca (瓦哈卡州)
2: Scoliosorus ensiformis (Hook.) T. Moore NA MX Oaxaca (瓦哈卡州)
decimalLatitude decimalLongitude coordinateUncertaintyInMeters elevation day month year basisOfRecord
<num> <num> <lgcl> <int> <int> <int> <int> <char>
1: 17.30213 -96.3808 NA 2267 27 2 2012 PRESERVED_SPECIMEN
2: 17.30213 -96.3808 NA 2267 27 2 2012 PRESERVED_SPECIMEN
Filtrar filas
De acuerdo con la sintaxis del paquete, el espacio i es el lugar en el que se pueden realizar operaciones sobre las filas como los filtros. Por ejemplo, utilizando la tabla de registros de especies de plantas podríamos estar interesados en solo seleccionar aquellos registros que pertenezcan al género Quercus.
O podríamos estar interesadas en seleccionar solo los registros más viejos, los que fueron colectados antes de 1950.
data_quercus_viejos <- data[genus =="Quercus"& year <=1950,]dim(data_quercus_viejos)
[1] 2927 23
Ordenar filas
Otra función que se puede realizar en el espacio de las filas es ordenarlas. Por ejemplo, podríamos ordenar la tabla de registros del género Quercus por estado en orden alfabético.
# Ordenar los datos de la tabla de registros de Quercus por estado en orden alfabeticoordered_data = data_quercus[order(stateProvince)]# seleccionar la columna de estado como vector y seleccionar los valores únicos# mostrar solo los primeros valoresunique(ordered_data$stateProvince) |>head()
[1] "" "Aguascalientes" "Baja California" "Baja California (norte)"
[5] "Baja California Norte" "Baja California Sur"
Reto
Carga el archivo de registros de plantas utilizando la función fread que revisamos en el tema anterior
Utiliza un filtro para quedarte con las filas que pertenezcan a un género o especie que te guste
Ordena de manera descendente por año
Pregunta:
¿De qué año son los registros más nuevos y más viejos de la especie que escogiste? (selecciona utilizando rangos la primera y la última fila de la tabla)
Respuesta
library(data.table)data =fread("data/plantae_mexico_conCoords_specimen.csv", quote="")data_quercus <- data[genus =="Quercus"&!is.na(year),] data_quercus_ordenado <- data_quercus[order(-year)] # Una función útil en el paquete es la función .N que te permite guardar el número de observaciones en el grupo actual. En este caso solo tenemos un solo grupo y por lo tanto guarda el número de filas en la tabla.data_quercus_ordenado[c(1, nrow(data_quercus_ordenado)),]$year
[1] 2023 1827
Operaciones sobre las columnas
Seleccionar columnas por índice
De acuerdo con la sintaxis del paquete, el espacio j nos permite realizar operaciones sobre las columnas. Una de esas operaciones es la selección de columnas.