Toni Massó Jou
2016-May-12 21:50 UTC
[R-es] Division entre el numero de ocurrencias parciales y totales dentro de un DataFrame de manera eficiente
Hola: A ver si me podéis ayudar que estoy atascado... Necesito contar los subcasos de la columna 2 de un dataframe respecto a los casos de la columna 1. Es decir, tengo un data.frame a<-c(rep(c('a','b','c','b','c'),3),'b') b<-c(rep(c('x','y','z','w'),4)) c<-c(rep(c(1,1,0,0),4)) df1<-data.frame(a,b,c,stringsAsFactors = FALSE) Y necesito contar los casos donde aparece "a" y "x" y dividirlo por el total de filas con primera columna=a. , df1:> df1a b 1 a x 2 b y 3 c z 4 b w 5 c x 6 a y 7 b z 8 c w 9 b x 10 c y 11 a z 12 b w 13 c x 14 b y 15 c z 16 b w Si hago df2<-df1%>%group_by(a)%>%count(a,b,c) df3<-df1%>%group_by(a)%>%count(a) en el df2: a b n (chr) (chr) (int) 1 a x 1 2 a y 1 3 a z 1 4 b w 3 5 b x 1 6 b y 2 7 b z 1 8 c w 1 9 c x 2 10 c y 1 11 c z 2 Necesito transformarlo en: a b n (chr) (chr) (int) 1 a x 1/3 2 a y 1/3 3 a z 1/3 4 b w 3/7 5 b x 1/7 6 b y 2/7 7 b z 1/7 8 c w 1/6 9 c x 2/6 10 c y 1/6 11 c z 2/6 donde 1/3 es el número de filas con valor (a,x)/totalvalores a. En fin, no se si me explico. El problema que tengo es que voy a tener muchisimas filas con pocas repeticiones, y no consigo hacer algo minimamente eficiente (y ya no digamos elegante). Muchas gracias por vuestro tiempo! Att. Toni [[alternative HTML version deleted]]
Javier Marcuzzi
2016-May-12 21:59 UTC
[R-es] Division entre el numero de ocurrencias parciales y totalesdentro de un DataFrame de manera eficiente
Estimado Tomi Massó Jou Pienso en dos partes, la primera, para ser optimizado debería trabajar con vectores. En todo caso con for, if. Lo segundo que pienso, usted dice que va a tener muchos datos, ¿Qué pasa si en lugar de data.frame intenta con data.table? Javier Rubén Marcuzzi De: Toni Massó Jou Enviado: jueves, 12 de mayo de 2016 18:50 Para: r-help-es en r-project.org Asunto: [R-es] Division entre el numero de ocurrencias parciales y totalesdentro de un DataFrame de manera eficiente Hola: A ver si me podéis ayudar que estoy atascado... Necesito contar los subcasos de la columna 2 de un dataframe respecto a los casos de la columna 1. Es decir, tengo un data.frame a<-c(rep(c('a','b','c','b','c'),3),'b') b<-c(rep(c('x','y','z','w'),4)) c<-c(rep(c(1,1,0,0),4)) df1<-data.frame(a,b,c,stringsAsFactors = FALSE) Y necesito contar los casos donde aparece "a" y "x" y dividirlo por el total de filas con primera columna=a. , df1:> df1a b 1 a x 2 b y 3 c z 4 b w 5 c x 6 a y 7 b z 8 c w 9 b x 10 c y 11 a z 12 b w 13 c x 14 b y 15 c z 16 b w Si hago df2<-df1%>%group_by(a)%>%count(a,b,c) df3<-df1%>%group_by(a)%>%count(a) en el df2: a b n (chr) (chr) (int) 1 a x 1 2 a y 1 3 a z 1 4 b w 3 5 b x 1 6 b y 2 7 b z 1 8 c w 1 9 c x 2 10 c y 1 11 c z 2 Necesito transformarlo en: a b n (chr) (chr) (int) 1 a x 1/3 2 a y 1/3 3 a z 1/3 4 b w 3/7 5 b x 1/7 6 b y 2/7 7 b z 1/7 8 c w 1/6 9 c x 2/6 10 c y 1/6 11 c z 2/6 donde 1/3 es el número de filas con valor (a,x)/totalvalores a. En fin, no se si me explico. El problema que tengo es que voy a tener muchisimas filas con pocas repeticiones, y no consigo hacer algo minimamente eficiente (y ya no digamos elegante). Muchas gracias por vuestro tiempo! Att. Toni [[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 [[alternative HTML version deleted]]
Toni Massó Jou
2016-May-13 08:54 UTC
[R-es] Division entre el numero de ocurrencias parciales y totalesdentro de un DataFrame de manera eficiente
Hola: Aplicaré lo que dices de usar data.table. Sobre hacer for, etc. Ya lo he hecho, pero pensaba que usar dplyr haría la tarea más rápida por estar este implementado en C (si no me equivoco). Siempre que puedo utilizo estas funciones, porque codificas menos y van más rápido. En este caso el problema es que no he encontrado la manera de hacer lo que quiero con dplyr o similar. La idea era al final comparar rendimientos... Muchas gracias Javier! ;) 2016-05-12 23:59 GMT+02:00 Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com> :> Estimado Tomi Massó Jou > > > > Pienso en dos partes, la primera, para ser optimizado debería trabajar con > vectores. En todo caso con for, if. > > > > Lo segundo que pienso, usted dice que va a tener muchos datos, ¿Qué pasa > si en lugar de data.frame intenta con data.table? > > > > Javier Rubén Marcuzzi > > > > *De: *Toni Massó Jou <tmassojou en gmail.com> > *Enviado: *jueves, 12 de mayo de 2016 18:50 > *Para: *r-help-es en r-project.org > *Asunto: *[R-es] Division entre el numero de ocurrencias parciales y > totalesdentro de un DataFrame de manera eficiente > > > > Hola: > > > > A ver si me podéis ayudar que estoy atascado... > > > > Necesito contar los subcasos de la columna 2 de un dataframe respecto a los > > casos de la columna 1. > > > > Es decir, tengo un data.frame > > > > a<-c(rep(c('a','b','c','b','c'),3),'b') > > b<-c(rep(c('x','y','z','w'),4)) > > c<-c(rep(c(1,1,0,0),4)) > > df1<-data.frame(a,b,c,stringsAsFactors = FALSE) > > > > > > Y necesito contar los casos donde aparece "a" y "x" y dividirlo por el > > total de filas con primera columna=a. , > > > > > > > > df1: > > > df1 > > a b > > 1 a x > > 2 b y > > 3 c z > > 4 b w > > 5 c x > > 6 a y > > 7 b z > > 8 c w > > 9 b x > > 10 c y > > 11 a z > > 12 b w > > 13 c x > > 14 b y > > 15 c z > > 16 b w > > > > Si hago > > df2<-df1%>%group_by(a)%>%count(a,b,c) > > df3<-df1%>%group_by(a)%>%count(a) > > > > en el df2: > > a b n > > (chr) (chr) (int) > > 1 a x 1 > > 2 a y 1 > > 3 a z 1 > > 4 b w 3 > > 5 b x 1 > > 6 b y 2 > > 7 b z 1 > > 8 c w 1 > > 9 c x 2 > > 10 c y 1 > > 11 c z 2 > > > > Necesito transformarlo en: > > > > a b n > > (chr) (chr) (int) > > 1 a x 1/3 > > 2 a y 1/3 > > 3 a z 1/3 > > 4 b w 3/7 > > 5 b x 1/7 > > 6 b y 2/7 > > 7 b z 1/7 > > 8 c w 1/6 > > 9 c x 2/6 > > 10 c y 1/6 > > 11 c z 2/6 > > > > > > donde 1/3 es el número de filas con valor (a,x)/totalvalores a. > > > > En fin, no se si me explico. > > > > El problema que tengo es que voy a tener muchisimas filas con pocas > > repeticiones, y no consigo hacer algo minimamente eficiente (y ya no > > digamos elegante). > > > > Muchas gracias por vuestro tiempo! > > > > Att. Toni > > > > [[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 > > >[[alternative HTML version deleted]]
Seemingly Similar Threads
- Division entre el numero de ocurrencias parciales y totalesdentro de un DataFrame de manera eficiente
- Manera eficiente de añadir el valor anterior por grupo
- Rv: Re: Buscando la solución más eficiente para generar resultados a partir de un list
- Correlaciones parciales
- Selección eficiente de individuos