Hola a todos,
Pongamos que tengo un data frame en el que consolido observaciones
procedentes de múltiples ficheros. Para simplificar:
df <- data.frame(id = c(rep("0001", 4), rep("0002", 2), rep("0003", 3)),
date = c(rep("2016-01-01", 4), rep("2016-01-10", 2),
rep("2016-02-01", 3)),
value = runif(n = 9, min = 10, max = 20),
version = c(rep(0, 2), rep(1, 2), rep(0, 2), rep(0, 3)))
El caso es que para un mismo id y date debo quedarme con la observación que
tenga la versión más alta (descartando el resto). Se os ocurre alguna
aproximación al problema?
Muchas gracias por vuestra ayuda
Rubén
[R-es] Eliminación de filas en data frame según versión del fichero de origen
3 messages · Rubén Coca, Carlos Ortega, Freddy Omar López Quintero
Hola, Esta puede ser una manera...
library(data.table)
dt <- as.data.table(df)
dt[, tail(.SD,1), by=c('id', 'date')]
id date value version 1: 0001 2016-01-01 18.86864 1 2: 0002 2016-01-10 13.44676 0 3: 0003 2016-02-01 19.16599 0 Saludos, Carlos Ortega www.qualityexcellence.es El 23 de enero de 2017, 18:27, Rubén Coca <ruben.coca en gmail.com> escribió:
Hola a todos,
Pongamos que tengo un data frame en el que consolido observaciones
procedentes de múltiples ficheros. Para simplificar:
df <- data.frame(id = c(rep("0001", 4), rep("0002", 2), rep("0003", 3)),
date = c(rep("2016-01-01", 4), rep("2016-01-10", 2),
rep("2016-02-01", 3)),
value = runif(n = 9, min = 10, max = 20),
version = c(rep(0, 2), rep(1, 2), rep(0, 2), rep(0, 3)))
El caso es que para un mismo id y date debo quedarme con la observación que
tenga la versión más alta (descartando el resto). Se os ocurre alguna
aproximación al problema?
Muchas gracias por vuestra ayuda
Rubén
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
?Hola.? 2017-01-23 14:27 GMT-03:00 Rubén Coca <ruben.coca en gmail.com>:
El caso es que para un mismo id y date debo quedarme con la observación que tenga la versión más alta (descartando el resto).
Si es válido apoyarse en SQL, yo usarÃa algo como:
library(sqldf)
sqldf("select rowid, id, max(value) from df group by id")
rowid id max(value) 1 4 0001 19.57054 2 5 0002 14.70713 3 7 0003 19.34788 donde se reporta el número de la fila por si se quiere hacer otro join.? ?Saludos.?
«PÃdeles sus tÃtulos a los que te persiguen, pregúntales cuándo nacieron, diles que te demuestren su existencia.» Rafael Cadenas [[alternative HTML version deleted]]