0

別のファイルの日付/時刻ウィンドウに基づいて、1つの大きなファイルから各個人のデータを抽出する必要があります。ウィンドウファイルとして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は1回だけ使用され、最初の出現から情報を抽出します。

私が試してみました

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

私があなたを正しく理解していれば、別のデータフレームを使用してそれらを参照できるように、ある意味で各部分を保持する 、IDStartおよびの一意の組み合わせを識別する単一の列を作成したいようです。End Date

すべてを単純に文字に強制し、それらを便利な区切り文字と一緒に貼り付けてみませんか? 次のようなものです:

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

そうすれば、ID-Start-End の組み合わせごとに一意の値が得られ、各ピースを簡単に取り出して、他のデータとマージすることができます。

于 2011-09-28T00:59:52.673 に答える