0

我必须根据另一个文件的日期/时间窗口从一个大文件中提取每个人的数据。我有 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

有重复的 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],]
}
4

1 回答 1

1

如果我对您的理解正确,听起来您想生成一个单独的列来标识 和 的唯一组合,ID这在某种意义上保留了每一部分,以便您可以使用另一个数据框来引用它们。StartEnd Date

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

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

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

于 2011-09-28T00:59:52.673 回答