сделать дубликаты уровней уникальными в r - PullRequest
0 голосов
/ 28 сентября 2011

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

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

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)

, но при этом он сделает уровни идентификаторов уникальными и будет использовать окно только с первого раза, когда этот уровень показывался.Итак, в моем примере 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],]
}

1 Ответ

1 голос
/ 28 сентября 2011

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

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

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

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

...