Nó có vẻ như một vấn đề đơn giản như vậy, nhưng tôi đã được kéo tóc của tôi ra cố gắng để có được điều này để làm việc:tổng hợp (count) hàng phù hợp với một điều kiện, nhóm bởi giá trị duy nhất
Với khung dữ liệu này xác định sự tương tác id
đã có với contact
người được nhóm lại theo 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
có bao nhiêu địa chỉ liên lạc, nơi có cho unique(data$contactGrp)
với relpos=1
và maxpos>1
?
Một Kết quả dự kiến sẽ là:
1 west 1
2 south 1
3 east 0
Một nhóm nhỏ các dòng tôi đã cố gắng:
aggregate(data, by=list('contactGrp'), FUN=count)
mang lại một lỗi, không lọc- sử dụng
data.table
dường như đòi hỏi một chìa khóa, không phải là duy nhất trong dữ liệu này… ddply(data,"contactGrp",summarise,count=???)
không chắc chắn nên sử dụng chức năng nào để điền vàocount
cộtddply(subset(data,maxpos>1 & relpos==0), c('contactGrp'), function(df)count(df$relpos))
công trình nhưng mang lại cho tôi thêm một cộtx
và nó cảm thấy như tôi đã overcomplicated nó ...
SQL sẽ được dễ dàng: Select contactGrp, count(*) as cnt from data where … Group by contactGrp
nhưng im cố gắng tìm hiểu R
Tôi nghĩ bạn có nghĩa là 'tây 2, đông 0, nam 0' cho kết quả mong đợi của bạn. – joran
thực sự relpos = 1. Nhưng có cho relpos = 0 kết quả mong đợi được liệt kê sai ... –
Gah! Bạn nói đúng, xin lỗi. Sáng sớm tôi đang ở đâu. :) – joran