在r中使重复级别唯一

问题描述 投票:0回答:1

我必须根据另一个文件的日期/时间窗口从一个大文件中提取每个人的数据。我有ID,Start,End date作为我的窗口文件和一个包含各种其他数据的大文件(FULLDATA),但我们只是简化它并说它只有ID,Date,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],]
}
r unique r-factor
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.