Francisco Javier
2014-Mar-07 13:39 UTC
[R-es] Identificar pares de valores en distintas filas
Muchas gracias a todos por vuestras respuestas! Me han sido de gran ayuda. Carlos, tienes toda la razón con el tema de que podría haber casos triplicados (de hecho los hay). Se me ocurre como solución "para salir del apuro" aplicar un intersect. Muchas gracias. Fco. Javier [[alternative HTML version deleted]]
Carlos Ortega
2014-Mar-07 14:01 UTC
[R-es] Identificar pares de valores en distintas filas
Hola, Sí, pensé en ello y puedes con el paquete "combinat" crear combinaciones de 3, 2 elementos donde cada elemento es una combinación de los strings "DATE-VALOR" (obtenidos con un unique) y sobre el resultado hacer un merge sobre los datos completos de tu data.frame igualmente con la combinación "DATE-VALOR"... Saludos, Carlos Ortega www.qualityexcellence.es El 7 de marzo de 2014, 14:39, Francisco Javier <iterador10@hotmail.com>escribió:> Muchas gracias a todos por vuestras respuestas! Me han sido de gran ayuda. > > > > Carlos, tienes toda la razón con el tema de que podría haber casos > triplicados (de hecho los hay). > > Se me ocurre como solución "para salir del apuro" aplicar un intersect. > > > > Muchas gracias. > > > > Fco. Javier > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Jorge I Velez
2014-Mar-07 14:26 UTC
[R-es] Identificar pares de valores en distintas filas
Hola Francisco y Carlos, Quizas lo siguiente funcione para 2, 3 o mas IDs con FECHA y VALOR comun (aqui el maximo es 3): d <- data.frame(ID = 1:8, FECHA = c("01/04/1965", "01/09/1988", "01/04/2004", "01/04/1965", "01/05/1992", "01/04/1965", "01/09/1988", "01/09/1988"), VALOR = c(25578, 23456, 76578, 25578, 33724, 65789, 23456, 23456)) d$comb <- with(d, paste0(FECHA, "_", VALOR)) s <- with(d, split(d, comb)) s <- s[sapply(s, function(l) NROW(l) > 1)] # mas de un ID ids <- sapply(s, "[", 1) k <- max(sapply(ids, length)) # maximo numero de IDs con FECHA/VALOR comunes out <- sapply(ids, function(x) x[1:k]) out <- t(out) out # [,1] [,2] [,3] #01/04/1965_25578.ID 1 4 NA #01/09/1988_23456.ID 2 7 8 El NA se genera porque en la 2a combinacion (FECHA = 01/09/1988, VALOR 23456) hay 3 IDs (2, 7 y 9) y en la 1ra combinacion solo dos (1 y 4). Saludos, Jorge.- 2014-03-08 1:01 GMT+11:00 Carlos Ortega <cof@qualityexcellence.es>:> Hola, > > Sí, pensé en ello y puedes con el paquete "combinat" crear combinaciones de > 3, 2 elementos donde cada elemento es una combinación de los strings > "DATE-VALOR" (obtenidos con un unique) y sobre el resultado hacer un merge > sobre los datos completos de tu data.frame igualmente con la combinación > "DATE-VALOR"... > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 7 de marzo de 2014, 14:39, Francisco Javier <iterador10@hotmail.com > >escribió: > > > Muchas gracias a todos por vuestras respuestas! Me han sido de gran > ayuda. > > > > > > > > Carlos, tienes toda la razón con el tema de que podría haber casos > > triplicados (de hecho los hay). > > > > Se me ocurre como solución "para salir del apuro" aplicar un intersect. > > > > > > > > Muchas gracias. > > > > > > > > Fco. Javier > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]