在r中使重复级别唯一

时间:2011-09-27 23:48:01

标签: r unique r-factor

我必须根据另一个文件的日期/时间窗口从一个大文件中提取每个人的数据。我有ID,开始,结束日期作为我的窗口文件和一个包含各种其他数据的大文件(FULLDATA),但我们只是简化它并说它只有ID,日期,X,Y,Z。 / p>

例如,日期窗口数据文件

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

有重复的ID,但我需要从中获取数据的唯一时间窗口。

在我的代码中,我需要设置级别

IDNames = levels(dates$ID)

但是这样做会使ID级别唯一,并且只在第一次显示该级别时使用该窗口。因此,在我的示例中,c1和a2将仅使用一次并从第一次出现中提取信息。

我试过了

levels(make.unique(IDNames))

但是这会将ID“c1”变成“c1.1”,这与我的其余命令中的FULLDATA文件不匹配。

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

1 个答案:

答案 0 :(得分:1)

如果我正确理解你,听起来你想要制作一个标识IDStartEnd Date的唯一组合的列,在某种意义上保留每个部分,以便您可以使用其他数据框来引用它们。

为什么不简单地将所有内容强制转换为字符并将它们与有用的分隔字符粘贴在一起?如下所示:

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

然后,您将为每个ID-Start-End组合获得一个唯一值,并且您可以轻松地再将每个部分拉出来用于与其他数据合并。