[R] Remove reciprocal data from a grouped animal social contact dataset

Cat Cowie cat.e.cowie at gmail.com
Fri Apr 26 11:08:01 CEST 2013


Hi r-help forum,

I have been collecting contact data (with proximity logger collars)
between a few different species of animal. All animals wear the
collars, and any contact between the animals should be detected and
recorded by both collars. However, this isn't always the case and more
contacts may be recorded on one collar of the two. This is fine, it
depends on battery life and other things that I will have to discuss!
I now have each contact recorded as a 'group in 4 columns':

> head(data)
  record            start duration     pair
1      1 27/05/2012 04:40     4948 CO1 CO12
2      2 31/05/2012 04:48      278 CO1 CO12
3      3 31/05/2012 05:30        3 CO1 CO12
4      4 31/05/2012 05:51      159 CO1 CO12
5      5 31/05/2012 05:56       47 CO1 CO12
6      6 31/05/2012 06:02      107 CO1 CO12


The first column shows the record number, the second shows the start
date and time of the contact, the third shows the contact duration and
the fourth shows the pair of animals involved in the contact. In this
case the top 6 contacts are all between animals CO1 and CO12. There
are nearly 100,000 records. There were many animals that could have
contacted each other:

> animals
   animals
1      CO1
2      CO2
3      CO3
4      CO4
5      CO5
6      CO6
7      CO7
8      CO8
9      CO9
10    CO10
11    CO11
12    CO12
13    CO13
14    CO14
15    CO15
16    CO16
17    CO17
18     PO1
19     PO2
20     PO3
21     PO4
22     PO5
23     PO6
24     PO7
25     PO8
26     PO9
27    PO10
28    PO11
29    PO12
30    PO13
31     PI1
32     PI2
33     PI3
34     PI4
35     PI5
36     PI6
37     PI7
38     PI8
39     RD1
40     RD2
41     WB1
42     WB2

Because both collars may have recorded the single contact, I need to
remove the reciprocal contacts from this dataset. For example, you may
have records for "CO1 CO2" that are mirrored by records for "CO2 CO1".
If there are the same number of records it doesn't matter which of
these you select, as long as only one set is used for further
analysis. Where there is an unequal number of contacts recorded on the
two collars between a pair, I would like to select the records which
have the most contacts. So, if there were 10 records recorded for "CO1
CO2" and 15 for "CO2 CO1" I would like to reject the first 10 contacts
and retain the 15. There are some cases where only one version of the
group is recorded, e.g. just "CO1 CO3", with no reciprocal "CO3 CO1".
In this case I would like to retain the data that I have.

I would normally like to present you with my attempts so far but as a
relatively new (but enthusiastic!) R user I am struggling to know
where to start.

I present more data here... sadly dput(head(data, 200) is printing all
the dates (all nearly 100,000 of them, regardless of using head()!) so
I hope this is ok for now:

> head(data,300)
    record            start duration     pair
1        1 27/05/2012 04:40     4948 CO1 CO12
2        2 31/05/2012 04:48      278 CO1 CO12
3        3 31/05/2012 05:30        3 CO1 CO12
4        4 31/05/2012 05:51      159 CO1 CO12
5        5 31/05/2012 05:56       47 CO1 CO12
6        6 31/05/2012 06:02      107 CO1 CO12
7        7 31/05/2012 06:08       86 CO1 CO12
8        8 31/05/2012 06:11      194 CO1 CO12
9        9 31/05/2012 06:20       87 CO1 CO12
10      10 31/05/2012 06:24       12 CO1 CO12
11      11 31/05/2012 06:32       11 CO1 CO12
12      12 31/05/2012 06:40      227 CO1 CO12
13      13 31/05/2012 06:47      115 CO1 CO12
14      14 12/04/2011 13:39      109 CO1 CO15
15      15 12/04/2011 22:29        3 CO1 CO15
16      16 12/04/2011 22:45       44 CO1 CO15
17      17 12/04/2011 23:20       55 CO1 CO15
18      18 13/04/2011 02:50       58 CO1 CO15
19      19 13/04/2011 03:15       11 CO1 CO15
20      20 13/04/2011 05:38       65 CO1 CO15
21      21 13/04/2011 08:55      122 CO1 CO15
22      22 13/04/2011 11:06        4 CO1 CO15
23      23 13/04/2011 13:47       53 CO1 CO15
24      24 13/04/2011 13:57       32 CO1 CO15
25      25 13/04/2011 14:32       16 CO1 CO15
26      26 13/04/2011 14:41        4 CO1 CO15
27      27 13/04/2011 21:53       33 CO1 CO15
28      28 14/04/2011 01:00       41 CO1 CO15
29      29 14/04/2011 01:07        5 CO1 CO15
30      30 14/04/2011 01:46        2 CO1 CO15
31      31 14/04/2011 06:43        3 CO1 CO15
32      32 14/04/2011 08:44        3 CO1 CO15
33      33 14/04/2011 08:51       64 CO1 CO15
34      34 14/04/2011 13:59        6 CO1 CO15
35      35 14/04/2011 14:11       11 CO1 CO15
36      36 14/04/2011 14:36      169 CO1 CO15
37      37 14/04/2011 14:42       19 CO1 CO15
38      38 14/04/2011 15:04       48 CO1 CO15
39      39 14/04/2011 15:10        2 CO1 CO15
40      40 14/04/2011 17:41       58 CO1 CO15
41      41 14/04/2011 18:33        3 CO1 CO15
42      42 15/04/2011 16:26       50 CO1 CO15
43      43 15/04/2011 20:12        3 CO1 CO15
44      44 16/04/2011 23:04        2 CO1 CO15
45      45 17/04/2011 02:57        7 CO1 CO15
46      46 17/04/2011 03:08       32 CO1 CO15
47      47 17/04/2011 14:51       55 CO1 CO15
48      48 17/04/2011 15:14       24 CO1 CO15
49      49 19/04/2011 03:36        7 CO1 CO15
50      50 19/04/2011 19:30        3 CO1 CO15
51      51 19/04/2011 19:35       30 CO1 CO15
52      52 19/04/2011 20:14       16 CO1 CO15
53      53 20/04/2011 15:34        3 CO1 CO15
54      54 20/04/2011 15:38       21 CO1 CO15
55      55 20/04/2011 19:05        3 CO1 CO15
56      56 20/04/2011 19:08        3 CO1 CO15
57      57 21/04/2011 20:26       42 CO1 CO15
58      58 21/04/2011 20:31        3 CO1 CO15
59      59 25/04/2011 20:02        2 CO1 CO15
60      60 26/04/2011 03:02        2 CO1 CO15
61      61 27/04/2011 00:59        4 CO1 CO15
62      62 27/04/2011 03:10       37 CO1 CO15
63      63 27/04/2011 19:49        7 CO1 CO15
64      64 28/04/2011 23:17        3 CO1 CO15
65      65 29/04/2011 14:56       18 CO1 CO15
66      66 29/04/2011 17:14        2 CO1 CO15
67      67 29/04/2011 17:41      112 CO1 CO15
68      68 03/05/2011 02:04        2 CO1 CO15
69      69 03/05/2011 02:48       12 CO1 CO15
70      70 03/05/2011 03:42        3 CO1 CO15
71      71 03/05/2011 04:05       11 CO1 CO15
72      72 04/05/2011 19:31        2 CO1 CO15
73      73 05/05/2011 01:09        7 CO1 CO15
74      74 05/05/2011 01:40        6 CO1 CO15
75      75 12/04/2011 08:05        5 CO1 CO16
76      76 12/04/2011 13:54      163 CO1 CO16
77      77 12/04/2011 13:58       90 CO1 CO16
78      78 12/04/2011 14:08       24 CO1 CO16
79      79 12/04/2011 14:10       87 CO1 CO16
80      80 12/04/2011 18:59       99 CO1 CO16
81      81 12/04/2011 20:11       72 CO1 CO16
82      82 12/04/2011 20:19       16 CO1 CO16
83      83 12/04/2011 22:31       17 CO1 CO16
84      84 12/04/2011 22:42       99 CO1 CO16
85      85 12/04/2011 22:45       68 CO1 CO16
86      86 12/04/2011 22:56       10 CO1 CO16
87      87 13/04/2011 00:15        6 CO1 CO16
88      88 13/04/2011 01:31        4 CO1 CO16
89      89 13/04/2011 01:53       38 CO1 CO16
90      90 13/04/2011 06:31       12 CO1 CO16
91      91 13/04/2011 13:35        8 CO1 CO16
92      92 13/04/2011 14:44      216 CO1 CO16
93      93 13/04/2011 18:30       21 CO1 CO16
94      94 13/04/2011 20:23        3 CO1 CO16
95      95 13/04/2011 22:59        2 CO1 CO16
96      96 14/04/2011 00:59        4 CO1 CO16
97      97 14/04/2011 01:07       10 CO1 CO16
98      98 14/04/2011 01:45       53 CO1 CO16
99      99 14/04/2011 03:03       29 CO1 CO16
100    100 14/04/2011 03:31      617 CO1 CO16
101    101 14/04/2011 03:46       12 CO1 CO16
102    102 14/04/2011 03:48       10 CO1 CO16
103    103 14/04/2011 03:49       13 CO1 CO16
104    104 14/04/2011 03:51        3 CO1 CO16
105    105 14/04/2011 03:53       10 CO1 CO16
106    106 14/04/2011 03:54      259 CO1 CO16
107    107 14/04/2011 04:04       10 CO1 CO16
108    108 14/04/2011 04:17        8 CO1 CO16
109    109 14/04/2011 04:19       40 CO1 CO16
110    110 14/04/2011 04:35        6 CO1 CO16
111    111 14/04/2011 04:39      102 CO1 CO16
112    112 14/04/2011 04:42       59 CO1 CO16
113    113 14/04/2011 04:44        7 CO1 CO16
114    114 14/04/2011 04:48        5 CO1 CO16
115    115 14/04/2011 04:51       41 CO1 CO16
116    116 14/04/2011 05:09       87 CO1 CO16
117    117 14/04/2011 05:21       81 CO1 CO16
118    118 14/04/2011 07:01      271 CO1 CO16
119    119 14/04/2011 14:34       13 CO1 CO16
120    120 14/04/2011 14:35       26 CO1 CO16
121    121 14/04/2011 14:37        2 CO1 CO16
122    122 14/04/2011 14:45       44 CO1 CO16
123    123 14/04/2011 15:06      193 CO1 CO16
124    124 14/04/2011 19:17      168 CO1 CO16
125    125 16/04/2011 23:43       54 CO1 CO16
126    126 17/04/2011 22:31       58 CO1 CO16
127    127 17/04/2011 22:34        5 CO1 CO16
128    128 19/04/2011 01:26       17 CO1 CO16
129    129 19/04/2011 18:59        3 CO1 CO16
130    130 20/04/2011 18:41        2 CO1 CO16
131    131 21/04/2011 13:13        9 CO1 CO16
132    132 21/04/2011 20:17       18 CO1 CO16
133    133 21/04/2011 22:55       10 CO1 CO16
134    134 22/04/2011 20:49        2 CO1 CO16
135    135 27/04/2011 02:28        2 CO1 CO16
136    136 27/04/2011 20:52        3 CO1 CO16
137    137 28/04/2011 18:00       43 CO1 CO16
138    138 28/04/2011 18:28       58 CO1 CO16
139    139 28/04/2011 18:34        4 CO1 CO16
140    140 29/04/2011 02:27        5 CO1 CO16
141    141 29/04/2011 17:05      395 CO1 CO16
142    142 30/04/2011 03:37       21 CO1 CO16
143    143 30/04/2011 15:26        3 CO1 CO16
144    144 30/04/2011 19:12       16 CO1 CO16
145    145 30/04/2011 20:32       54 CO1 CO16
146    146 30/04/2011 20:35      114 CO1 CO16
147    147 02/05/2011 00:26       30 CO1 CO16
148    148 03/05/2011 18:56       20 CO1 CO16
149    149 17/07/2010 04:02        6  CO1 CO2
150    150 18/07/2010 18:45        3  CO1 CO2
151    151 19/07/2010 02:43        9  CO1 CO2
152    152 19/07/2010 17:48       56  CO1 CO2
153    153 20/07/2010 03:15        4  CO1 CO2
154    154 20/07/2010 04:17       48  CO1 CO2
155    155 20/07/2010 04:20       49  CO1 CO2
156    156 21/07/2010 16:09      114  CO1 CO2
157    157 22/07/2010 15:02       12  CO1 CO2
158    158 22/07/2010 21:44       40  CO1 CO2
159    159 23/07/2010 17:10        2  CO1 CO2
160    160 23/07/2010 17:12      114  CO1 CO2
161    161 23/07/2010 22:22        4  CO1 CO2
162    162 24/07/2010 03:32       28  CO1 CO2
163    163 24/07/2010 03:42        2  CO1 CO2
164    164 24/07/2010 19:08       12  CO1 CO2
165    165 24/07/2010 20:25        9  CO1 CO2
166    166 25/07/2010 20:49       14  CO1 CO2
167    167 26/07/2010 13:53        5  CO1 CO2
168    168 26/07/2010 20:17        9  CO1 CO2
169    169 26/07/2010 20:19      181  CO1 CO2
170    170 26/07/2010 20:31       38  CO1 CO2
171    171 26/07/2010 22:52        5  CO1 CO2
172    172 27/07/2010 01:43        6  CO1 CO2
173    173 27/07/2010 02:30       29  CO1 CO2
174    174 27/07/2010 05:26       31  CO1 CO2
175    175 27/07/2010 13:08       61  CO1 CO2
176    176 27/07/2010 13:10        5  CO1 CO2
177    177 27/07/2010 13:11        8  CO1 CO2
178    178 27/07/2010 13:18       25  CO1 CO2
179    179 28/07/2010 03:20       49  CO1 CO2
180    180 28/07/2010 03:29       15  CO1 CO2
181    181 28/07/2010 03:42        9  CO1 CO2
182    182 28/07/2010 03:44       39  CO1 CO2
183    183 28/07/2010 04:20        4  CO1 CO2
184    184 28/07/2010 04:22       47  CO1 CO2
185    185 28/07/2010 04:26      384  CO1 CO2
186    186 28/07/2010 04:35      204  CO1 CO2
187    187 28/07/2010 04:42       10  CO1 CO2
188    188 28/07/2010 04:59        3  CO1 CO2
189    189 28/07/2010 07:39        2  CO1 CO2
190    190 28/07/2010 15:18       67  CO1 CO2
191    191 28/07/2010 20:02       62  CO1 CO2
192    192 29/07/2010 03:31       13  CO1 CO2
193    193 29/07/2010 04:25       14  CO1 CO2
194    194 29/07/2010 09:14        4  CO1 CO2
195    195 29/07/2010 09:20     1112  CO1 CO2
196    196 29/07/2010 09:40        4  CO1 CO2
197    197 29/07/2010 12:12      352  CO1 CO2
198    198 29/07/2010 12:44      796  CO1 CO2
199    199 29/07/2010 14:32        4  CO1 CO2
200    200 29/07/2010 19:42       15  CO1 CO2
201    201 30/07/2010 09:51       17  CO1 CO2
202    202 30/07/2010 09:53        8  CO1 CO2
203    203 30/07/2010 10:02       31  CO1 CO2
204    204 30/07/2010 10:18      117  CO1 CO2
205    205 30/07/2010 21:51        2  CO1 CO2
206    206 31/07/2010 01:56       25  CO1 CO2
207    207 31/07/2010 03:57       58  CO1 CO2
208    208 31/07/2010 04:04       12  CO1 CO2
209    209 31/07/2010 15:06       42  CO1 CO2
210    210 01/08/2010 01:59       28  CO1 CO2
211    211 01/08/2010 02:15       31  CO1 CO2
212    212 01/08/2010 03:11       10  CO1 CO2
213    213 01/08/2010 03:28       30  CO1 CO2
214    214 01/08/2010 03:42        4  CO1 CO2
215    215 01/08/2010 03:48      104  CO1 CO2
216    216 01/08/2010 06:49       94  CO1 CO2
217    217 01/08/2010 06:52       66  CO1 CO2
218    218 01/08/2010 07:11       18  CO1 CO2
219    219 01/08/2010 07:13        2  CO1 CO2
220    220 01/08/2010 14:25       43  CO1 CO2
221    221 01/08/2010 14:51        4  CO1 CO2
222    222 01/08/2010 16:22      195  CO1 CO2
223    223 01/08/2010 16:34       55  CO1 CO2
224    224 01/08/2010 16:36       39  CO1 CO2
225    225 01/08/2010 16:46        6  CO1 CO2
226    226 01/08/2010 18:18       32  CO1 CO2
227    227 01/08/2010 18:52       38  CO1 CO2
228    228 02/08/2010 02:57      132  CO1 CO2
229    229 02/08/2010 13:37       11  CO1 CO2
230    230 02/08/2010 16:32       62  CO1 CO2
231    231 03/08/2010 01:51       57  CO1 CO2
232    232 03/08/2010 03:24       37  CO1 CO2
233    233 03/08/2010 03:49       44  CO1 CO2
234    234 03/08/2010 03:51       31  CO1 CO2
235    235 03/08/2010 04:45       70  CO1 CO2
236    236 03/08/2010 04:54        4  CO1 CO2
237    237 03/08/2010 05:03       59  CO1 CO2
238    238 04/08/2010 15:10       64  CO1 CO2
239    239 04/08/2010 15:12        4  CO1 CO2
240    240 04/08/2010 15:14       92  CO1 CO2
241    241 04/08/2010 19:39        7  CO1 CO2
242    242 04/08/2010 20:54       31  CO1 CO2
243    243 05/08/2010 01:36       30  CO1 CO2
244    244 05/08/2010 01:57       25  CO1 CO2
245    245 05/08/2010 02:01       42  CO1 CO2
246    246 05/08/2010 02:06      181  CO1 CO2
247    247 05/08/2010 02:53        5  CO1 CO2
248    248 05/08/2010 17:32        2  CO1 CO2
249    249 05/08/2010 17:35        5  CO1 CO2
250    250 05/08/2010 17:43        9  CO1 CO2
251    251 05/08/2010 20:09       71  CO1 CO2
252    252 05/08/2010 20:13       80  CO1 CO2
253    253 05/08/2010 20:18       61  CO1 CO2
254    254 05/08/2010 20:29        9  CO1 CO2
255    255 05/08/2010 20:38        5  CO1 CO2
256    256 05/08/2010 21:51       15  CO1 CO2
257    257 06/08/2010 02:16       12  CO1 CO2
258    258 06/08/2010 02:42       56  CO1 CO2
259    259 06/08/2010 02:45        3  CO1 CO2
260    260 06/08/2010 09:38      529  CO1 CO2
261    261 06/08/2010 15:25        2  CO1 CO2
262    262 06/08/2010 15:34        5  CO1 CO2
263    263 06/08/2010 15:39      367  CO1 CO2
264    264 06/08/2010 15:50       55  CO1 CO2
265    265 06/08/2010 15:52      111  CO1 CO2
266    266 06/08/2010 16:00      263  CO1 CO2
267    267 06/08/2010 16:07       56  CO1 CO2
268    268 06/08/2010 17:21        8  CO1 CO2
269    269 06/08/2010 17:32      211  CO1 CO2
270    270 06/08/2010 18:48       20  CO1 CO2
271    271 06/08/2010 19:10       57  CO1 CO2
272    272 06/08/2010 19:17       57  CO1 CO2
273    273 06/08/2010 19:24       43  CO1 CO2
274    274 06/08/2010 19:40       12  CO1 CO2
275    275 06/08/2010 19:56       17  CO1 CO2
276    276 07/08/2010 02:45        4  CO1 CO2
277    277 07/08/2010 14:42       37  CO1 CO2
278    278 07/08/2010 14:44        3  CO1 CO2
279    279 07/08/2010 15:58      305  CO1 CO2
280    280 07/08/2010 18:11      105  CO1 CO2
281    281 07/08/2010 18:20       87  CO1 CO2
282    282 07/08/2010 20:24       20  CO1 CO2
283    283 08/08/2010 16:10       57  CO1 CO2
284    284 08/08/2010 16:12       38  CO1 CO2
285    285 08/08/2010 16:17      105  CO1 CO2
286    286 08/08/2010 16:20       82  CO1 CO2
287    287 08/08/2010 16:24      151  CO1 CO2
288    288 08/08/2010 16:30       20  CO1 CO2
289    289 08/08/2010 16:49        5  CO1 CO2
290    290 08/08/2010 16:54       44  CO1 CO2
291    291 08/08/2010 17:16       64  CO1 CO2
292    292 08/08/2010 17:23       56  CO1 CO2
293    293 08/08/2010 17:25       50  CO1 CO2
294    294 08/08/2010 17:40       53  CO1 CO2
295    295 08/08/2010 17:46       54  CO1 CO2
296    296 08/08/2010 17:50       57  CO1 CO2
297    297 08/08/2010 17:53      103  CO1 CO2
298    298 08/08/2010 17:56       51  CO1 CO2
299    299 08/08/2010 18:07       12  CO1 CO2
300    300 08/08/2010 18:41        2  CO1 CO2



Thanks, Cat



More information about the R-help mailing list