2011-09-27 4 views
0

Мне нужно извлечь данные для каждого человека из одного большого файла на основе окна даты/времени из другого файла. У меня есть ID, Start, End date как мой файл окна и огромный файл (FULLDATA) со всеми видами других данных в нем, но мы просто упростим его и скажем, что он имеет только ID, Date, X, Y, Z.сделать дубликаты уровней уникальными в r

Например., даты окна файла данных

ID Start    End Date   
c1 03/03/03 01:02 03/15/03 12:00 
a2 03/03/03 04:35 03/10/03 13:00 
f3 02/03/03 11:02 05/15/03 15:00 
c1 01/03/04 13:02 02/15/05 17:00 
a2 04/23/04 04:02 05/14/05 10:00 

Есть повторяющиеся идентификаторы, но уникальные окна времени мне нужно, чтобы получить данные.

В моем коде мне нужно установить уровни

IDNames = levels(dates$ID) 

, но в этом он будет делать уровни ID уникальным и использовать только окно с 1-й раз, что уровень показал. Таким образом, в моем примере c1 и a2 будут использоваться только 1 раз и извлекать информацию с их первого появления.

Я попытался

levels(make.unique(IDNames)) 

Но тогда получится идентификатор «c1» в «C1.1», который не будет совпадать с файлом FULLDATA в остальной части моих команд.

for (n in 1:(length(IDNames))) { 
    IndivData = FULLDATA[FULLDATA$ID==IDNames[n],] 
    Dateswindow = dates[dates$ID==IDNames[n],] 
} 
+0

Если я правильно понял, не будет ли номер строки делать то, что вы хотите? Так как никакие две строки, по-видимому, не должны иметь одинаковый идентификатор ?! – Tommy

+0

Нет, номер строки не будет работать ... Я не думаю. Поскольку существует множество дубликатов дат начала и окончания, они уникальны только по идентификатору. Итак, я должен сказать, что, пожалуйста, вытащите данные между этими датами для отдельных 1. – Kerry

ответ

1

Если я правильно понять вас, это звучит, как вы хотите, чтобы произвести один столбец, который идентифицирует уникальную комбинацию ID, Start и End Date, что в каком-то смысле, сохраняющий каждый кусок, так что вы можете обратиться к они используют другой фрейм данных.

Почему бы просто не привести в порядок все символы и вставить их вместе с полезным разделительным символом? Так что-то вроде:

IDNames <- paste(as.character(dates$ID),as.character(...),as.character(...),sep = "-") 

Тогда вы будете иметь уникальное значение для каждой комбинации ID-Start-End, и вы можете легко вытащить каждую часть снова использовать для слияния обратно с другими данными.

+0

Так что мне нужно было бы сделать этот тип столбца в обоих файлах? В основном создайте уникальное значение, чтобы иметь возможность сортировать и ссылаться? – Kerry

+0

@ Kerry Конечно, я думаю. Но, честно говоря, ваше описание того, что вы делаете, действительно запутывает. – joran

+0

У меня есть набор данных, который просто имеет окно дат для 1 животного. Эти даты соответствуют поведению. НАПРИМЕР. медведь с 15 сентября по 15 ноября спящий, а с 12 мая по 15 июня он ловит рыбу на реке. У меня 30 медведей, все из которых имеют множественное поведение и окно времени, соответствующее этим поведением. Другим файлом является полный набор данных для отслеживания местоположений медведя 5 раз в день в течение 3 лет. Я хочу извлечь данные из ПОЛНЫХ ДАННЫХ, которые соответствуют данным WINDOW DATA. Существует более одного поведения/индивидуальности, которое будет отображаться не один раз с разными окнами времени. – Kerry

Смежные вопросы