Rubén Coca
2017-Jan-23 17:27 UTC
[R-es] Eliminación de filas en data frame según versión del fichero de origen
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]]
Carlos Ortega
2017-Jan-23 17:35 UTC
[R-es] Eliminación de filas en data frame según versión del fichero de origen
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]]
Freddy Omar López Quintero
2017-Jan-24 02:11 UTC
[R-es] Eliminación de filas en data frame según versión del fichero de origen
?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]]