r data.table

Tablas de frecuencia simples usando data.table



(1)

data.table tiene un par de símbolos que pueden usarse dentro de la expresión j . Notablemente

  • .N le dará el número de filas en cada grupo.

ver ?data.table bajo los detalles de by

Avanzado: cuando se agrupa por o por i, los símbolos .SD, .BY y .N se pueden usar en la expresión j, definida de la siguiente manera.

....

.N es un número entero, longitud 1, que contiene el número de filas en el grupo.

Por ejemplo:

dt[, .N ,by = Species] Species N 1: setosa 50 2: versicolor 50 3: virginica 50

Estoy buscando una manera de hacer agregados / conteos simples a través de data.table.

Considere los datos del iris, que tiene 50 observaciones por especie. Para contar las observaciones por especie, tengo que resumir sobre una columna distinta de las especies, por ejemplo "Sepal.Length".

library(data.table) dt = as.data.table(iris) dt[,length(Sepal.Length), Species]

Encuentro esto confuso porque parece que estoy haciendo algo en Sepal.Length a primera vista, cuando en realidad lo único importante son las Especies.

Esto es lo que preferiría decir, pero no obtengo resultados válidos:

dt[,length(Species), Species]

Corregir la entrada y salida, pero el código torpe:

> dt[,length(Sepal.Length), Species] Species V1 1: setosa 50 2: versicolor 50 3: virginica 50

Entrada y salida incorrecta, pero mejor código:

> dt[,length(Species), Species] Species V1 1: setosa 1 2: versicolor 1 3: virginica 1

¿Hay una manera elegante de evitar esto?