[R-es] Division entre el numero de ocurrencias parciales y totalesdentro de un DataFrame de manera eficiente

Javier Marcuzzi javier.ruben.marcuzzi en gmail.com
Jue Mayo 12 23:59:56 CEST 2016


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:
> 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]]



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