miriam.alzate en unavarra.es
2017-Apr-07 16:49 UTC
[R-es] [Fwd: Re: Asignar a observaciones de una misma fecha el mismo número de orden en una secuencia]
Finalmente está cerrado el tema, con el último correo se creó la variable tal y como quería. Muchas gracias. ---------------------------- Mensaje original ---------------------------- Asunto: Re: [R-es] Asignar a observaciones de una misma fecha el mismo número de orden en una secuencia De: "Carlos Ortega" <cof en qualityexcellence.es> Fecha: Mar, 4 de Abril de 2017, 23:44 Para: miriam.alzate en unavarra.es -------------------------------------------------------------------------- Hola, Acabo de correr el mismo código que te pasé con la modificación de nombres de columnas...y me funciona... Vaya no me genera errores...(lo he ejecutado sobre los datos "Sample"). #----------- names(Sample) <- c('id', 'pubdate', 'txt', 'votes') datIn <- Sample library(data.table) library(lubridate) dt <- as.data.table(datIn) dt[ , miju := julian.Date(ymd(pubdate))] # Doy un primer orden sin tener en cuenta las fechas iguales setorder(dt, id, -votes, miju) dt[, mior := seq_len(.N), by=id] # Para las fechas iguales df <- as.data.frame(dt) for(i in 1:(nrow(df)-1)) { if(df$miju[i] == df$miju[i+1]) { df$mior[i+1] <- df$mior[i] } else next } head(df[, c(1,2,4,5,6)]) #----------- Please ejecútalo y comprueba que la lógica se cumple... La columna a mirar es "mior". Gracias, Carlos. El 4 de abril de 2017, 17:12, <miriam.alzate en unavarra.es> escribió:> Buenas Carlos, > > No me funciona...me sigue dando error. Te paso mejor una pequeña muestra > del archivo de R para que veas si hay algún error. > > > Muchas gracias, > > Miriam > > El Lun, 3 de Abril de 2017, 22:08, Carlos Ortega escribió: > > Hola Miriam, > > > > Utiliza el paquete, "lubridate". > > > > y haz algo como esto, suponiendo que tu data.frame se llama "mydf".. > > > > #---------- > > library(lubridate) > > mydf$fecha <- ymd(mydf$fecha_sin_formato) > > #---------- > > > > Ya me cuentas si funciona, > > Carlos. > > > > > > > > > > > > El 3 de abril de 2017, 20:08, <miriam.alzate en unavarra.es> escribió: > > > >> Muchas gracias por la respuesta Carlos. Estoy haciéndolo y me da el > >> siguiente error al crear la variable miju: > >> > >> "Warning message: All formats failed to parse. No formats found" > >> > >> Estoy mirando el formato de la variable fecha y, aunque al importar la > >> base de datos a R, seleccioné el formato fecha, veo que al poner el > >> cursor > >> sobre la variable me pone "Unknown", por lo que quizá no esté el formato > >> fecha. > >> > >> Las fechas me aparecen de la siguiente forma: 2013-07-13 (año-mes-día). > >> ¿Cómo debería darle el formato correcto para que me deje hacer el > >> comando > >> miju? > >> > >> Muchas gracias y un saludo. > >> > >> > >> El Sab, 1 de Abril de 2017, 17:21, Carlos Ortega escribió: > >> > Hola Miriam, > >> > > >> > Esta es una forma de hacerlo: > >> > > >> > #--------------- > >> > > >> > datIn <- read.table("Orden_variable.csv", sep=";", header = TRUE) > >> > names(datIn) <- c('v1','v2','v3','v4','v5') > >> > > >> > library(data.table) > >> > library(lubridate) > >> > dt <- as.data.table(datIn) > >> > dt[ , miju := julian.Date(dmy(v4))] > >> > > >> > # Doy un primer orden sin tener en cuenta las fechas iguales > >> > setorder(dt, v2, -v3, miju) > >> > dt[, mior := seq_len(.N), by=v2] > >> > > >> > # Para las fechas iguales > >> > df <- as.data.frame(dt) > >> > for(i in 1:(nrow(df)-1)) { > >> > if(df$miju[i] == df$miju[i+1]) { > >> > df$mior[i+1] <- df$mior[i] > >> > } else next > >> > } > >> > > >> > #--------------- > >> > > >> > Saludos, > >> > Carlos. > >> > > >> > El 30 de marzo de 2017, 18:37, <miriam.alzate en unavarra.es> escribió: > >> > > >> >> Hola Carlos, > >> >> > >> >> Sería porque es la 4ª review en esa fecha (hay 3 observaciones > >> >> anteriores). > >> >> En el caso del "P402", las dos observaciones del mismo día con el > >> mismo > >> >> número de votos(ordenado de mayor a menor), reciben el orden 1, pero > >> la > >> >> siguiente más nueva recibe el 3 porque hay dos observaciones > >> anteriores. > >> >> En realidad yo no tengo la variable Numero.Review en la base de datos > >> >> sino > >> >> Review.Content. > >> >> > >> >> Envio el archivo excel con el ejemplo. He llamado "Orden.deseado" a > >> la > >> >> variable que quiero construir de forma automática. La tabla que > >> adjunto > >> >> estaría ya ordenada 1 por Id.Producto, 2º por Numero.Votos y 3º por > >> >> Fecha.Publicación. > >> >> > >> >> Muchas gracias y un saludo > >> >> > >> >> Miriam > >> >> > >> >> > >> >> > >> >> > >> >> El Jue, 23 de Marzo de 2017, 23:36, Carlos Ortega escribió: > >> >> > Hola Miriam, > >> >> > > >> >> > ¿Por qué la última de "P401" tiene Orden = 4?..¿Por que su úiltimo > >> >> > "Numero.Review" es 4?. > >> >> > Si esa es la lógica, que es la que has descrito, porqué en la P402 > >> la > >> >> > última es de "Orden" = 3 y no = 7? Que es su último > >> Numero.Review?... > >> >> > > >> >> > Tampoco pienses que con un "comando" se hace esto... sí con una > >> >> lógica, > >> >> > varias instrucciones seguidas. Si hay suerte se podrá arreglar con > >> una > >> >> > función sencilla... > >> >> > > >> >> > Es una extensión de lo último que te envié. En ese otro caso, se > >> >> ordenaba > >> >> > por una sola columna, ahora hay que ordenar por varias columnas, > >> esto > >> >> es > >> >> > fácil y luego para encontrar el número de orden haría la misma > >> lógica > >> >> que > >> >> > la otra vez... Bueno, confirma lo que preguntas y veremos si esas > >> >> ideas > >> >> > funcionan. También si los datos los adjuntas en un fichero .txt o > >> >> .csv... > >> >> > mejor. > >> >> > > >> >> > Gracias, > >> >> > Carlos. > >> >> > > >> >> > El 23 de marzo de 2017, 3:23, <miriam.alzate en unavarra.es> > escribió: > >> >> > > >> >> >> > >> >> >> Quiero crear una nueva variable "Orden" que me ordene el > >> >> >> "Numbero.Review", > >> >> >> 1º por "Id.Producto", 2º por "Número.Votos" de más a menos y 3º > >> por > >> >> >> Fecha.publicación.Review" de la más nueva a la más antigua. Como > >> hay > >> >> >> observaciones con el mismo número de votos y en la misma fecha, > >> >> quiero > >> >> >> que > >> >> >> tengan el mismo número de orden. Pero la siguiente observación de > >> la > >> >> >> siguiente fecha tiene que tener un orden=1+numero de reviews de > >> los > >> >> días > >> >> >> previos. > >> >> >> En mi base de datos tengo 66.000 observaciones(reviews) que > >> >> pertenecen a > >> >> >> 137 productos diferentes. Cada día tengo diferentes observaciones > >> de > >> >> los > >> >> >> mismos productos, por lo que el producto aparece tantas veces como > >> >> >> reviews > >> >> >> haya prublicadas. Los datos son como el ejemplo que he mandado > >> >> >> anteriormente. La variable que quiero crear es a la que llamo > >> >> "Orden", > >> >> >> el > >> >> >> resto las tengo. Esta variable orden va en cada producto del 1 al > >> >> número > >> >> >> de reviews que haya ( por ejemplo en el P401 4). Para el P402, > >> vuelve > >> >> a > >> >> >> empezar del 1 al número de reviews de ese producto. > >> >> >> > >> >> >> Lo que necesito es sacar esta variable "Orden de forma > >> automatica". > >> >> No > >> >> >> sé > >> >> >> que comando utilizar. > >> >> >> > >> >> >> Numero.Review Id.Producto Número.Votos > >> Fecha.publicación.Review > >> >> >> Orden > >> >> >> > >> >> >> 1 P401 42 2017-02-25 > >> >> >> 1 > >> >> >> > >> >> >> 2 P401 5 2017-01-06 > >> >> >> 2 > >> >> >> > >> >> >> 3 P401 5 2017-01-06 > >> >> >> 2 > >> >> >> > >> >> >> 4 P401 0 2016-12-30 > >> >> >> 4 > >> >> >> > >> >> >> 5 P402 3 2017-03-15 > >> >> >> 1 > >> >> >> > >> >> >> 6 P402 3 2017-03-15 > >> >> >> 1 > >> >> >> > >> >> >> 7 P402 0 2016-12-31 > >> >> >> 3 > >> >> >> > >> >> >> 8 P403 12 2016-11-15 > >> >> >> 1 > >> >> >> > >> >> >> 9 P403 12 2016-11-10 > >> >> >> 2 > >> >> >> > >> >> >> 10 P403 15 2016-10-25 > >> >> >> 3 > >> >> >> > >> >> >> 11 P403 15 2016-10-25 > >> >> >> 3 > >> >> >> > >> >> >> 12 P403 2 2016-09-30 > >> >> >> 5 > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> > > >> >> > > >> >> > -- > >> >> > Saludos, > >> >> > Carlos Ortega > >> >> > www.qualityexcellence.es > >> >> > > >> >> > >> > > >> > > >> > > >> > -- > >> > Saludos, > >> > Carlos Ortega > >> > www.qualityexcellence.es > >> > > >> > >> > >> > > > > > > -- > > Saludos, > > Carlos Ortega > > www.qualityexcellence.es > > >-- Saludos, Carlos Ortega www.qualityexcellence.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170407/9f41bd7e/attachment-0001.html>