gracias patricio, vamos a chequear la solucion, un abrazo,
eric.
On 01/07/2017 01:29 AM, patricio fuenmayor wrote:
Hola.
Esta es una manera:
require(data.table)
dt <-
data.table(v1=letters[1:30],v2=round(runif(30,max=20)),v3=rep(c("x","y","z"),10))
dt[unlist(dt[,.I[which.max(v2)],by=v3,drop
Hola.
Esta es una manera:
require(data.table)
dt <-
data.table(v1=letters[1:30],v2=round(runif(30,max=20)),v3=rep(c("x","y","z"),10))
dt[unlist(dt[,.I[which.max(v2)],by=v3,drop=TRUE][,2])]
Saludos.
[[alternative HTML version deleted]]
___
R-he
Muchas gracias Carlos, Carlos y Javier, vamos a probar las opciones.
Saludos, Eric.
On 01/06/2017 12:38 PM, Carlos J. Gil Bellosta wrote:
Lo que quieres es un sort y, luego, un tail. Abundando en el ejemplo de
Carlos Ortega,
library(data.table)
set.seed(22)
tmp <- data.table(x = rnorm(1
Lo que quieres es un sort y, luego, un tail. Abundando en el ejemplo de
Carlos Ortega,
library(data.table)
set.seed(22)
tmp <- data.table(x = rnorm(100), y = rnorm(100), z = sample(1:5, 100,
replace = TRUE))
setkeyv(tmp, c("z", "y"))
tmp[, tail(.SD, 1), by=z]
Así puedes sacar los N mayores, etc
Hola,
Una forma de hacerlo es esta:
#--
library(data.table)
set.seed(22)
DT <- data.table( x = rnorm(100), y = rnorm(100), z = sample(1:5, 100,
replace = TRUE))
DT[, Max := max(y), by=z][y == Max]
#--
Que produce este resultado:
> DT[, Max := max(y), by=z][y
puede ser que tenga el
resultado en sus manos, pero no se dio cuenta.
Javier Rubén Marcuzzi
De: eric
Enviado: viernes, 6 de enero de 2017 0:38
Para: Lista R
Asunto: [R-es] que tal comunidad, una pregunta del paquete data.table
si se tiene un data.table (DT), supongamos de 100 filas por 3
si se tiene un data.table (DT), supongamos de 100 filas por 3 columnas
de datos numericos, como puedo hacer para obtener el correspondiente
valor de la columna 1 si busco, por ejemplo, el maximo de la columna 2
agrupado por la columna 3 ?
para buscar el maximo de la columna 2 escribo.
DT[ , m