それはとても単純な問題のように思えますが、私はこれを機能させるために髪を引っ張ってきました:
によってグループ化された人とid
の相互作用を識別するこのデータフレームを考えると、contact
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
と でどこに連絡先がいくつunique(data$contactGrp)
ありrelpos=1
ますmaxpos>1
か?
予想される結果は次のようになります。
1 west 1
2 south 1
3 east 0
私が試した行の小さなサブセット:
aggregate(data, by=list('contactGrp'), FUN=count)
エラーが発生し、フィルタリングされません- using
data.table
にはキーが必要なようですが、このデータでは一意ではありません…</li> ddply(data,"contactGrp",summarise,count=???)
count
列を埋めるために使用する関数がわからないddply(subset(data,maxpos>1 & relpos==0), c('contactGrp'), function(df)count(df$relpos))
動作しますが、余分な列が表示x
され、複雑になりすぎているように感じます...</li>
SQL は簡単ですSelect contactGrp, count(*) as cnt from data where … Group by contactGrp
が、学習しようとしていますR