Parece un problema tan simple, pero he estado tomando el pelo a cabo tratando de conseguir que esto funcione:agregada (recuento) filas que cumplan una condición, por grupo de valores únicos
Dada esta trama de datos de identificación las interacciones id
tenían con contact
que se agrupa por contactGrp
,
head(data)
id sesTs contact contactGrp relpos maxpos
1 6849 2012-06-25 15:58:34 peter west 0.000000 3
2 6849 2012-06-25 18:24:49 sarah south 0.500000 3
3 6849 2012-06-27 00:13:30 sarah south 1.000000 3
4 1235 2012-06-29 17:49:35 peter west 0.000000 2
5 1235 2012-06-29 23:56:35 peter west 1.000000 2
6 5893 2012-06-30 22:21:33 carl east 0.000000 1
cuántos contactos donde hay para unique(data$contactGrp)
con relpos=1
y maxpos>1
?
un resultado esperado sería:
1 west 1
2 south 1
3 east 0
Un pequeño subconjunto de las líneas que he intentado:
aggregate(data, by=list('contactGrp'), FUN=count)
produce un error, sin filtrado- usando
data.table
parece requerir una clave, que no es exclusivo en estos datos ... ddply(data,"contactGrp",summarise,count=???)
no estoy seguro de qué función usar para llenar elcount
columnaddply(subset(data,maxpos>1 & relpos==0), c('contactGrp'), function(df)count(df$relpos))
obras, pero me da una columna adicionalx
y se siente como si hubiera excesivamente complicada que ...
SQL sería fácil: Select contactGrp, count(*) as cnt from data where … Group by contactGrp
pero estoy tratando de aprender R
Creo que significó 'west 2, east 0, south 0' para obtener los resultados esperados. – joran
realmente relpos = 1. Pero sí para relpos = 0 el resultado esperado está en la lista incorrecta ... –
Gah! Tienes razón, lo siento. Es temprano en la mañana donde estoy. :) – joran