Discussion:
[R-es] Crear columna en data frame agregando otra y fusionando
Miriam Alzate
2018-09-12 11:38:36 UTC
Permalink
Buenas,

Necesito crear una variable que viene de agregar otra por la media. El
dataframe tiene 65000 obsrvaciones.Tengo estas variables

Product.Id (145 diferentes)

Word.Count

Review.number

Necesito agregar la variable Word.Count por Product.Id. Al agregarlo,
tengo un data.frame de 2 variables y 145 observaciones pero en vez de
tener que fusionar después por Product.Id los dos dataframe me gustaría
saber si hay una forma más directa de hacerlo todo en la misma formula y
que agregue Word.count por Product.Id y luego directamente fusione.

Un saludo

Miriam
Jesús Para Fernández
2018-09-12 11:45:04 UTC
Permalink
No se si te he entendido muy bien, pero con data.table puedes hacer algo como esto:

df <- data.table(df)
df[,.(word.count=mean(variableimportante)),by=word.count]

UN saludo
Jesús
________________________________
De: R-help-es <r-help-es-***@r-project.org> en nombre de Miriam Alzate <***@unavarra.es>
Enviado: miércoles, 12 de septiembre de 2018 13:38
Para: r-help-es
Asunto: [R-es] Crear columna en data frame agregando otra y fusionando

Buenas,

Necesito crear una variable que viene de agregar otra por la media. El
dataframe tiene 65000 obsrvaciones.Tengo estas variables

Product.Id (145 diferentes)

Word.Count

Review.number

Necesito agregar la variable Word.Count por Product.Id. Al agregarlo,
tengo un data.frame de 2 variables y 145 observaciones pero en vez de
tener que fusionar después por Product.Id los dos dataframe me gustaría
saber si hay una forma más directa de hacerlo todo en la misma formula y
que agregue Word.count por Product.Id y luego directamente fusione.

Un saludo

Miriam

_______________________________________________
R-help-es mailing list
R-help-***@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

[[alternative HTML version deleted]]
Miriam Alzate
2018-09-12 11:54:30 UTC
Permalink
No es lo que busco..La idea es crear una variable nueva, por ejemplo
"Nueva", que sea la media de "Wordcount" agregada por "Product.Id". Pero
quiero que esta variable se añada a mi base de datos fusionandose
directamente por "Product.Id".

Al hacerlo me da este error:

Reviews.211216$Adjetives.Product<- aggregate(adj.x ~ Product.Id,
data=Reviews.211216, + FUN=mean) Error in `$<-.data.frame`(`*tmp*`,
Adjetives.Product, value = list(Product.Id = c("P104006", : replacement
has 143 rows, data has 65505 No me deja crear así directamente la variable.


El 12/09/2018 a las 13:45, Jesús Para Fernández escribió:
> No se si te he entendido muy bien, pero con data.table puedes hacer
> algo como esto:
>
> df <- data.table(df)
> df[,.(word.count=mean(variableimportante)),by=word.count]
>
> UN saludo
> Jesús
> ------------------------------------------------------------------------
> *De:* R-help-es <r-help-es-***@r-project.org> en nombre de Miriam
> Alzate <***@unavarra.es>
> *Enviado:* miércoles, 12 de septiembre de 2018 13:38
> *Para:* r-help-es
> *Asunto:* [R-es] Crear columna en data frame agregando otra y fusionando
> Buenas,
>
> Necesito crear una variable que viene de agregar otra por la media. El
> dataframe tiene 65000 obsrvaciones.Tengo estas variables
>
> Product.Id (145 diferentes)
>
> Word.Count
>
> Review.number
>
> Necesito agregar la variable Word.Count por Product.Id. Al agregarlo,
> tengo un data.frame de 2 variables y 145 observaciones pero en vez de
> tener que fusionar después por Product.Id los dos dataframe me gustaría
> saber si hay una forma más directa de hacerlo todo en la misma formula y
> que agregue Word.count por Product.Id y luego directamente fusione.
>
> Un saludo
>
> Miriam
>
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


[[alternative HTML version deleted]]
Carlos Ortega
2018-09-12 12:08:54 UTC
Permalink
Hola Miriam,

df <- data.table(df)
df[,.(Nueva=mean(Word.count, na.rm = TRUE)) , by=c("Product.id")]

df_out <- as.data.frame(df)

Cuando creas "Nueva" en la sentencia anterior, aparece en el dataframe
agregada y diferente cada grupo "Product.id". Es una de las ventajas de
"data.table".
En tu ejemplo, primero agregas y luego la adjuntas al dataframe.

Saludos,
Carlos Ortega
www.qualityexcellence.es


El 12 de septiembre de 2018, 13:54, Miriam Alzate <***@unavarra.es
> escribió:

> No es lo que busco..La idea es crear una variable nueva, por ejemplo
> "Nueva", que sea la media de "Wordcount" agregada por "Product.Id". Pero
> quiero que esta variable se añada a mi base de datos fusionandose
> directamente por "Product.Id".
>
> Al hacerlo me da este error:
>
> Reviews.211216$Adjetives.Product<- aggregate(adj.x ~ Product.Id,
> data=Reviews.211216, + FUN=mean) Error in `$<-.data.frame`(`*tmp*`,
> Adjetives.Product, value = list(Product.Id = c("P104006", : replacement
> has 143 rows, data has 65505 No me deja crear así directamente la variable.
>
>
> El 12/09/2018 a las 13:45, Jesús Para Fernández escribió:
> > No se si te he entendido muy bien, pero con data.table puedes hacer
> > algo como esto:
> >
> > df <- data.table(df)
> > df[,.(word.count=mean(variableimportante)),by=word.count]
> >
> > UN saludo
> > Jesús
> > ------------------------------------------------------------------------
> > *De:* R-help-es <r-help-es-***@r-project.org> en nombre de Miriam
> > Alzate <***@unavarra.es>
> > *Enviado:* miércoles, 12 de septiembre de 2018 13:38
> > *Para:* r-help-es
> > *Asunto:* [R-es] Crear columna en data frame agregando otra y fusionando
> > Buenas,
> >
> > Necesito crear una variable que viene de agregar otra por la media. El
> > dataframe tiene 65000 obsrvaciones.Tengo estas variables
> >
> > Product.Id (145 diferentes)
> >
> > Word.Count
> >
> > Review.number
> >
> > Necesito agregar la variable Word.Count por Product.Id. Al agregarlo,
> > tengo un data.frame de 2 variables y 145 observaciones pero en vez de
> > tener que fusionar después por Product.Id los dos dataframe me gustaría
> > saber si hay una forma más directa de hacerlo todo en la misma formula y
> > que agregue Word.count por Product.Id y luego directamente fusione.
> >
> > Un saludo
> >
> > Miriam
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-***@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>


--
Saludos,
Carlos Ortega
www.qualityexcellence.es

[[alternative HTML version deleted]]
Javier Nieto
2018-09-12 14:55:25 UTC
Permalink
Hola Miriam


La verdad es que desconozco si existe una forma de hacer lo que necesitas. En esos casos, como comentas, los pasos que he visto en varios lugares y con algunos colegas es siempre agregar por separado y luego unirlos con un merge. Por otro lado creo que se podría hacer en un solo paso, pero me imagino que no sería simple, si alguien conoce una forma sencilla estaría muy bien.



Saludos

________________________________
De: R-help-es <r-help-es-***@r-project.org> en nombre de Carlos Ortega <***@qualityexcellence.es>
Enviado: miércoles, 12 de septiembre de 2018 07:08:54 a. m.
Para: Miriam Alzate
CC: r-help-es
Asunto: Re: [R-es] Crear columna en data frame agregando otra y fusionando

Hola Miriam,

df <- data.table(df)
df[,.(Nueva=mean(Word.count, na.rm = TRUE)) , by=c("Product.id")]

df_out <- as.data.frame(df)

Cuando creas "Nueva" en la sentencia anterior, aparece en el dataframe
agregada y diferente cada grupo "Product.id". Es una de las ventajas de
"data.table".
En tu ejemplo, primero agregas y luego la adjuntas al dataframe.

Saludos,
Carlos Ortega
www.qualityexcellence.es<http://www.qualityexcellence.es>


El 12 de septiembre de 2018, 13:54, Miriam Alzate <***@unavarra.es
> escribió:

> No es lo que busco..La idea es crear una variable nueva, por ejemplo
> "Nueva", que sea la media de "Wordcount" agregada por "Product.Id". Pero
> quiero que esta variable se añada a mi base de datos fusionandose
> directamente por "Product.Id".
>
> Al hacerlo me da este error:
>
> Reviews.211216$Adjetives.Product<- aggregate(adj.x ~ Product.Id,
> data=Reviews.211216, + FUN=mean) Error in `$<-.data.frame`(`*tmp*`,
> Adjetives.Product, value = list(Product.Id = c("P104006", : replacement
> has 143 rows, data has 65505 No me deja crear así directamente la variable.
>
>
> El 12/09/2018 a las 13:45, Jesús Para Fernández escribió:
> > No se si te he entendido muy bien, pero con data.table puedes hacer
> > algo como esto:
> >
> > df <- data.table(df)
> > df[,.(word.count=mean(variableimportante)),by=word.count]
> >
> > UN saludo
> > Jesús
> > ------------------------------------------------------------------------
> > *De:* R-help-es <r-help-es-***@r-project.org> en nombre de Miriam
> > Alzate <***@unavarra.es>
> > *Enviado:* miércoles, 12 de septiembre de 2018 13:38
> > *Para:* r-help-es
> > *Asunto:* [R-es] Crear columna en data frame agregando otra y fusionando
> > Buenas,
> >
> > Necesito crear una variable que viene de agregar otra por la media. El
> > dataframe tiene 65000 obsrvaciones.Tengo estas variables
> >
> > Product.Id (145 diferentes)
> >
> > Word.Count
> >
> > Review.number
> >
> > Necesito agregar la variable Word.Count por Product.Id. Al agregarlo,
> > tengo un data.frame de 2 variables y 145 observaciones pero en vez de
> > tener que fusionar después por Product.Id los dos dataframe me gustaría
> > saber si hay una forma más directa de hacerlo todo en la misma formula y
> > que agregue Word.count por Product.Id y luego directamente fusione.
> >
> > Un saludo
> >
> > Miriam
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-***@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>


--
Saludos,
Carlos Ortega
www.qualityexcellence.es<http://www.qualityexcellence.es>

[[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-***@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

[[alternative HTML version deleted]]
Loading...