[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