I must be blind but I don' see any link between the two files. RD2 seems to give some kind of encounter data in length of time. allocate gives the time that an animal was wearing a collar ?
If each file belongs to a specific animal (am I reading this correctly) what does it matter what the collar was? Or is there something in the RD2 file that gives a clue to other collars ? I must be missing the point completely but I don't understand why you want to know who was wearing what at what time from the data you have presented. BTW , nice presentation of the sample data however dput (head(RD2, 200)) would have been even better than head(RD2, 200). John Kane Kingston ON Canada > -----Original Message----- > From: cat.e.co...@gmail.com > Sent: Fri, 29 Mar 2013 18:49:45 +0800 > To: r-help@r-project.org > Subject: [R] Create values based on a table of conditions > > Hi R help forum, > > I have a simple data frame of four columns - one of numbers (really a > categorical variable), one of dates and one > > of data. I have over 500,000 data points to work with, spread over 40 > files, each named after a different animal. > > These are contact data recorded by proximity loggers over two years > between the animals of the file name and > > collars being worn by other animals. The collar may have been worn by > more than one different animal in the study period. > > So for example... > > filename: RD2 > > And the data looks like: > > (I'm sorry here, dput(head(RD2, 200)) was outputting all the times, > such that it was too large for the console, so I just used head() ) > >> head(RD2, 200) > encounter_id date encounter_start encounter_length > 1 15 22/06/2011 22:21:45 20 > 2 10 04/07/2011 04:18:57 1 > 3 10 04/07/2011 04:23:12 1 > 4 15 08/07/2011 02:02:30 23 > 5 15 08/07/2011 02:03:26 264 > 6 15 08/07/2011 02:09:20 35 > 7 15 08/07/2011 02:10:25 173 > 8 15 08/07/2011 02:13:40 65 > 9 15 08/07/2011 02:15:12 47 > 10 15 08/07/2011 02:17:16 65 > 11 15 08/07/2011 02:39:10 54 > 12 15 14/07/2011 02:20:27 1 > 13 15 14/07/2011 02:23:35 6 > 14 15 14/07/2011 02:25:52 1 > 15 15 14/07/2011 02:26:17 39 > 16 15 14/07/2011 02:28:36 31 > 17 60 14/07/2011 02:41:56 1 > 18 60 14/07/2011 02:42:30 1 > 19 60 14/07/2011 02:43:30 36 > 20 60 14/07/2011 02:45:38 1 > 21 60 14/07/2011 02:46:07 15 > 22 60 14/07/2011 02:46:59 11 > 23 52 14/07/2011 02:57:43 97 > 24 12 09/08/2011 22:13:42 1 > 25 41 18/08/2011 02:53:18 1 > 26 41 19/08/2011 00:57:46 1 > 27 41 19/08/2011 01:59:17 1 > 28 41 19/08/2011 02:06:16 21 > 29 41 19/08/2011 02:08:50 1 > 30 41 19/08/2011 02:09:26 29 > 31 50 19/08/2011 02:19:31 1 > 32 50 19/08/2011 02:20:20 1 > 33 50 19/08/2011 02:20:54 1 > 34 50 19/08/2011 02:21:25 25 > 35 50 19/08/2011 02:22:17 20 > 36 50 19/08/2011 02:23:00 10 > 37 50 19/08/2011 02:25:10 1 > 38 50 19/08/2011 02:25:54 1 > 39 50 19/08/2011 02:26:50 75 > 40 50 19/08/2011 02:29:53 1 > 41 50 19/08/2011 02:30:41 6 > 42 50 28/08/2011 19:32:47 1 > 43 50 28/08/2011 19:36:38 10 > 44 39 30/08/2011 22:13:14 1 > 45 52 13/09/2011 20:04:57 17 > 46 20 18/09/2011 00:32:43 8 > 47 17 02/10/2011 09:10:18 52 > 48 17 02/10/2011 09:15:49 1 > 49 17 02/10/2011 09:17:19 1 > 50 25 03/10/2011 17:16:20 6 > 51 41 05/10/2011 04:04:35 1 > 52 52 07/10/2011 22:59:57 45 > 53 62 16/10/2011 18:33:03 6 > 54 52 28/10/2011 15:19:47 1 > 55 41 28/10/2011 19:00:24 8 > 56 17 03/12/2011 17:38:08 2 > 57 17 03/12/2011 17:38:49 20 > 58 17 20/05/2012 19:45:17 17 > 59 17 20/05/2012 19:45:58 47 > 60 17 22/05/2012 23:12:54 1 > 61 17 22/05/2012 23:15:15 3 > 62 17 22/05/2012 23:15:40 7 > 63 17 22/05/2012 23:16:09 40 > 64 17 22/05/2012 23:36:30 3 > 65 17 22/05/2012 23:37:29 10 > 66 17 22/05/2012 23:39:17 1 > 67 17 23/05/2012 20:44:01 15 > 68 6 17/07/2012 04:25:29 8 > 69 53 17/07/2012 23:53:01 2 > 70 53 24/07/2012 03:09:25 1 > 71 17 24/07/2012 20:58:42 16 > 72 17 24/07/2012 21:00:46 13 > 73 17 25/07/2012 04:57:54 21 > 74 17 25/07/2012 05:04:37 1 > 75 17 27/07/2012 00:53:59 125 > 76 17 27/07/2012 01:00:55 1 > 77 17 27/07/2012 01:01:57 1 > 78 17 27/07/2012 01:28:46 1 > 79 17 27/07/2012 01:41:14 5 > 80 17 27/07/2012 01:42:18 1 > 81 17 27/07/2012 01:43:46 1 > 82 17 27/07/2012 01:49:23 4 > 83 17 27/07/2012 04:26:49 1 > 84 17 27/07/2012 04:44:38 3 > 85 17 27/07/2012 04:45:27 1 > 86 17 27/07/2012 05:21:40 2 > 87 17 27/07/2012 05:22:13 2 > 88 17 27/07/2012 05:39:47 1 > 89 17 28/07/2012 00:11:46 3 > 90 17 30/07/2012 20:58:47 1 > 91 17 30/07/2012 20:59:22 1 > 92 17 30/07/2012 20:59:50 1 > 93 17 30/07/2012 21:03:15 1 > 94 17 30/07/2012 21:04:00 10 > 95 17 30/07/2012 21:05:05 1 > 96 17 30/07/2012 21:15:02 1 > 97 17 30/07/2012 22:04:55 1 > 98 17 30/07/2012 22:27:21 1 > 99 17 30/07/2012 22:33:12 5 > 100 17 30/07/2012 22:35:55 3 > 101 17 30/07/2012 22:36:32 4 > 102 17 30/07/2012 22:38:38 37 > 103 17 30/07/2012 22:40:45 6 > 104 17 30/07/2012 22:43:13 2 > 105 17 30/07/2012 22:46:56 3 > 106 17 30/07/2012 22:54:33 29 > 107 17 30/07/2012 23:12:10 1 > 108 17 30/07/2012 23:12:36 25 > 109 17 30/07/2012 23:14:42 1 > 110 17 30/07/2012 23:20:08 1 > 111 17 30/07/2012 23:29:27 11 > 112 17 30/07/2012 23:35:28 1 > 113 17 30/07/2012 23:36:44 1 > 114 17 30/07/2012 23:43:15 1 > 115 17 30/07/2012 23:43:49 1 > 116 17 30/07/2012 23:44:39 29 > 117 17 30/07/2012 23:45:31 1 > 118 17 30/07/2012 23:52:18 23 > 119 17 30/07/2012 23:53:20 2 > 120 17 30/07/2012 23:53:57 12 > 121 17 30/07/2012 23:54:37 19 > 122 17 30/07/2012 23:59:34 19 > 123 17 31/07/2012 00:13:14 5 > 124 17 31/07/2012 00:13:44 8 > 125 17 31/07/2012 00:16:08 11 > 126 17 31/07/2012 00:16:58 39 > 127 17 31/07/2012 00:18:16 13 > 128 17 31/07/2012 00:19:43 12 > 129 17 31/07/2012 00:20:26 7 > 130 17 31/07/2012 00:21:05 1 > 131 17 31/07/2012 00:27:05 4 > 132 17 31/07/2012 00:54:22 1 > 133 17 31/07/2012 00:54:48 96 > 134 17 31/07/2012 01:01:57 1 > 135 17 31/07/2012 01:47:05 1 > 136 17 31/07/2012 01:47:50 20 > 137 17 31/07/2012 01:48:32 8 > 138 17 31/07/2012 03:37:37 1 > 139 17 31/07/2012 03:38:03 5 > 140 17 31/07/2012 03:38:44 99 > 141 17 31/07/2012 03:41:34 28 > 142 17 31/07/2012 03:43:49 22 > 143 17 31/07/2012 03:45:43 1 > 144 17 31/07/2012 03:49:19 24 > 145 17 31/07/2012 04:03:03 6 > 146 17 31/07/2012 04:06:10 65 > 147 17 31/07/2012 04:11:19 1 > 148 17 31/07/2012 04:11:49 1 > 149 17 31/07/2012 04:24:48 3 > 150 17 31/07/2012 04:25:39 80 > 151 17 31/07/2012 04:27:28 17 > 152 17 31/07/2012 04:32:41 7 > 153 17 31/07/2012 04:45:24 1 > 154 17 31/07/2012 04:56:40 6 > 155 17 31/07/2012 05:05:56 2 > 156 17 31/07/2012 05:07:29 1 > 157 17 01/08/2012 00:21:25 1 > 158 17 01/08/2012 00:22:17 25 > 159 17 01/08/2012 00:23:36 12 > 160 17 01/08/2012 00:25:14 4 > 161 17 01/08/2012 00:41:13 1 > 162 17 01/08/2012 00:42:28 12 > 163 17 01/08/2012 00:43:54 2 > 164 17 01/08/2012 00:55:37 8 > 165 17 01/08/2012 01:00:38 39 > 166 17 01/08/2012 01:06:32 9 > 167 17 01/08/2012 01:11:19 1 > 168 17 01/08/2012 01:14:10 3 > 169 17 01/08/2012 01:14:48 17 > 170 17 01/08/2012 01:15:30 27 > 171 17 01/08/2012 01:16:20 71 > 172 17 01/08/2012 01:18:05 107 > 173 17 01/08/2012 01:23:54 1 > 174 17 01/08/2012 01:24:51 11 > 175 17 01/08/2012 01:32:09 1 > 176 17 01/08/2012 01:32:57 16 > 177 17 01/08/2012 01:33:35 69 > 178 17 01/08/2012 01:38:47 1 > 179 17 01/08/2012 01:39:18 75 > 180 17 01/08/2012 01:41:07 1 > 181 17 01/08/2012 01:41:48 1 > 182 17 01/08/2012 01:53:50 1 > 183 17 01/08/2012 01:55:29 1 > 184 17 01/08/2012 01:55:52 2 > 185 17 01/08/2012 01:56:17 25 > 186 17 01/08/2012 02:01:00 3 > 187 17 01/08/2012 02:03:13 32 > 188 17 01/08/2012 02:04:34 99 > 189 17 01/08/2012 02:06:43 43 > 190 17 01/08/2012 02:07:58 7 > 191 17 01/08/2012 02:08:55 22 > 192 17 01/08/2012 02:09:47 6 > 193 17 01/08/2012 02:20:21 15 > 194 17 01/08/2012 04:06:42 1 > 195 17 01/08/2012 04:15:26 46 > 196 17 01/08/2012 04:21:12 1 > 197 17 01/08/2012 04:22:12 1 > 198 17 01/08/2012 04:34:28 25 > 199 17 01/08/2012 04:35:26 1 > 200 17 01/08/2012 04:36:01 14 > > When an animal was caught and the collar battery needed to be changed, > a whole new collar had to be put on, as > > these animals (cows, pigs, wild boar and red deer!) were not that easy > to catch, or hold onto for long! In order to follow the movements of > each animal rather than each collar I now need to create a new column > that assigns the data by animal rather than by collar. I have a table > of dates showing which animal was wearing which collar and when: > >> head(allocate) > animal collar start_date end_date > 1 CO1 36 16/07/2010 11/04/2011 > 2 CO1 64 12/04/2011 21/02/2012 > 3 CO1 25 21/02/2012 10/07/2012 > 4 CO2 28 16/07/2010 09/04/2011 > 5 CO2 11 12/04/2011 10/04/2012 > 6 CO3 46 16/07/2010 10/04/2011 > >> dput(allocate) > structure(list(animal = structure(c(1L, 1L, 1L, 10L, 10L, 11L, > 11L, 11L, 12L, 13L, 13L, 14L, 15L, 16L, 16L, 16L, 17L, 17L, 17L, > 2L, 3L, 4L, 4L, 4L, 5L, 6L, 6L, 7L, 8L, 9L, 9L, 26L, 26L, 26L, > 31L, 31L, 31L, 31L, 32L, 32L, 32L, 32L, 33L, 33L, 33L, 34L, 34L, > 34L, 35L, 35L, 36L, 36L, 37L, 38L, 38L, 27L, 27L, 28L, 28L, 29L, > 29L, 29L, 30L, 30L, 30L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, > 39L, 40L, 41L), .Label = c("CO1", "CO10", "CO11", "CO12", "CO13", > "CO14", "CO15", "CO16", "CO17", "CO2", "CO3", "CO4", "CO5", "CO6", > "CO7", "CO8", "CO9", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", > "PI7", "PI8", "PO1", "PO10", "PO11", "PO12", "PO13", "PO2", "PO3", > "PO4", "PO5", "PO6", "PO7", "PO8", "PO9", "RD1", "RD2", "WB1" > ), class = "factor"), collar = c(36L, 64L, 25L, 28L, 11L, 46L, > 58L, 12L, 4L, 52L, 2L, 63L, 14L, 12L, 12L, 57L, 51L, 51L, 24L, > 42L, 44L, 25L, 23L, 7L, 2L, 45L, 9L, 11L, 30L, 14L, 42L, 23L, > 19L, 52L, 41L, 53L, 18L, 41L, 55L, 10L, 15L, 50L, 34L, 3L, 16L, > 32L, 16L, 37L, 50L, 19L, 37L, 3L, 10L, 27L, 41L, 6L, 15L, 62L, > 18L, 52L, 39L, 52L, 62L, 53L, 62L, 18L, 63L, 37L, 57L, 54L, 23L, > 56L, 38L, 17L, 61L, 33L), start_date = structure(c(14L, 7L, 22L, > 14L, 7L, 14L, 7L, 3L, 7L, 14L, 13L, 11L, 14L, 14L, 16L, 15L, > 14L, 13L, 15L, 29L, 14L, 14L, 13L, 15L, 14L, 14L, 15L, 6L, 6L, > 13L, 12L, 31L, 6L, 18L, 29L, 6L, 25L, 10L, 30L, 6L, 23L, 10L, > 28L, 4L, 22L, 30L, 6L, 22L, 6L, 20L, 24L, 22L, 27L, 2L, 23L, > 24L, 10L, 27L, 9L, 6L, 27L, 8L, 6L, 23L, 9L, 17L, 5L, 17L, 1L, > 17L, 1L, 1L, 17L, 21L, 19L, 26L), .Label = c("02/06/2011", "02/11/2010", > "09/02/2012", "10/04/2011", "10/12/2010", "11/04/2011", "12/04/2011", > "13/02/2012", "14/02/2012", "15/02/2012", "15/07/2010", "16/02/2012", > "16/03/2011", "16/07/2010", "17/02/2012", "17/03/2011", "18/10/2010", > "19/07/2011", "20/06/2011", "20/07/2011", "20/08/2011", "21/02/2012", > "21/07/2011", "21/09/2011", "22/09/2011", "23/07/2011", "25/07/2011", > "25/08/2010", "26/10/2010", "28/10/2010", "29/08/2010"), class = > "factor"), > end_date = structure(c(18L, 34L, 16L, 12L, 15L, 14L, 29L, > 41L, 32L, 7L, 19L, 17L, 24L, 36L, 26L, 30L, 36L, 31L, 27L, > 11L, 36L, 36L, 26L, 28L, 9L, 20L, 41L, 15L, 25L, 24L, 10L, > 40L, 29L, 5L, 11L, 33L, 4L, 28L, 18L, 29L, 1L, 22L, 14L, > 1L, 30L, 18L, 24L, 30L, 33L, 30L, 23L, 30L, 30L, 37L, 1L, > 4L, 30L, 4L, 30L, 33L, 4L, 30L, 33L, 4L, 30L, 3L, 39L, 42L, > 6L, 38L, 2L, 21L, 8L, 35L, 35L, 13L), .Label = c("01/02/2012", > "02/06/2011", "03/02/2011", "03/02/2012", "03/05/2012", "03/06/2011", > "04/01/2011", "04/02/2011", "05/03/2011", "05/06/2012", "07/04/2011", > "09/04/2011", "10/02/2012", "10/04/2011", "10/04/2012", "10/07/2012", > "10/12/2010", "11/04/2011", "12/10/2011", "13/01/2011", "13/02/2012", > "13/11/2012", "14/02/2012", "15/02/2012", "16/01/2012", "17/02/2012", > "18/05/2012", "18/07/2012", "19/07/2011", "19/07/2012", "19/10/2011", > "20/06/2011", "20/07/2011", "21/02/2012", "21/10/2012", "23/02/2011", > "23/03/2011", "24/01/2011", "26/01/2011", "28/01/2011", "29/03/2012", > "30/05/2011"), class = "factor")), .Names = c("animal", "collar", > "start_date", "end_date"), class = "data.frame", row.names = c(NA, > -76L)) > > > I have so far been able to make some conditional tests, though I would > need to do this for all 76 animals in the > > study... > > animal1test<- (date>=01/01/13 && date<=03/01/13) > animal1test2<- (date>=04/01/13 && date<=06/01/13) > animal2test<- (date>=04/01/13 && date<=06/01/13) > > to use in a giant'if else' formula: > > if(animal1test){ > collar[1]="animal1" > } else if(animal1test2){ > collar[5]="animal1" > }else if(animal2test) > collar[1]="animal2" > }else "NA" > > ...etc... > > As I'm sure you can see, this is completely inelegant, and also not > working for me! Any ideas on how to a achieve > > this? > > Thanks, > Cat > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ____________________________________________________________ GET FREE SMILEYS FOR YOUR IM & EMAIL - Learn more at http://www.inbox.com/smileys Works with AIM®, MSN® Messenger, Yahoo!® Messenger, ICQ®, Google Talk™ and most webmails ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.