Sembra un semplice problema così, eppure sono stato tirando fuori i miei capelli cercando di arrivare a questo lavoro:Aggregate (conteggio) le righe che corrispondono a una condizione, gruppo da valori unici
Dato questo frame di dati di identificazione le interazioni id
avevano con contact
che è raggruppato per 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
quanti contatti dove lì per unique(data$contactGrp)
con relpos=1
e maxpos>1
?
Un risultato atteso sarebbe:
1 west 1
2 south 1
3 east 0
Un piccolo sottoinsieme di linee ho provato:
aggregate(data, by=list('contactGrp'), FUN=count)
produce un errore, nessun filtro- utilizzando
data.table
sembra richiedere una chiave, che non è univoco in questi dati ... ddply(data,"contactGrp",summarise,count=???)
non è sicuro quale funzione utilizzare per riempire ilcount
colonnaddply(subset(data,maxpos>1 & relpos==0), c('contactGrp'), function(df)count(df$relpos))
opere, ma mi dà una colonna in piùx
e ci si sente come se fossi troppo complicata è ...
SQL sarebbe stato facile: Select contactGrp, count(*) as cnt from data where … Group by contactGrp
ma im cercando di imparare R
Penso che intendessi "ovest 2, est 0, sud 0" per i risultati attesi. – joran
in realtà relpos = 1. Ma sì per relpos = 0 il risultato atteso è elencato in modo errato ... –
Gah! Hai ragione, mi dispiace. È mattina presto dove sono. :) – joran