[R-es] [Fwd: Re: Asignar a observaciones de una misma fecha el mismo número de orden en una secuencia]

miriam.alzate en unavarra.es miriam.alzate en unavarra.es
Vie Abr 7 18:49:02 CEST 2017


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>


Más información sobre la lista de distribución R-help-es