データの非常に大きな CSV があり、列 2 で規定されている現在の日付より前の日付について、列 2 の各名前の各行に以前のデータを追加する必要があります。この問題を表現する最も簡単な方法は、実際のデータに似た詳細な例を提供することですが、大幅に縮小すると思います。
Datatitle,Date,Name,Score,Parameter
data,01/09/13,george,219,dataa,text
data,01/09/13,fred,219,datab,text
data,01/09/13,tom,219,datac,text
data,02/09/13,george,229,datad,text
data,02/09/13,fred,239,datae,text
data,02/09/13,tom,219,dataf,text
data,03/09/13,george,209,datag,text
data,03/09/13,fred,217,datah,text
data,03/09/13,tom,213,datai,text
data,04/09/13,george,219,dataj,text
data,04/09/13,fred,212,datak,text
data,04/09/13,tom,222,datal,text
data,05/09/13,george,319,datam,text
data,05/09/13,fred,225,datan,text
data,05/09/13,tom,220,datao,text
data,06/09/13,george,202,datap,text
data,06/09/13,fred,226,dataq,text
data,06/09/13,tom,223,datar,text
data,06/09/13,george,219,dataae,text
したがって、この csv の最初の 3 行には、以前のデータはありません。したがって、現在の日付よりも前の日付の george (行 1) の最後の 3 回の出現に対して列 3 と 4 をプルしたいと言った場合、次のようになります。
data,01/09/13,george,219,dataa,text,x,y,x,y,x,y
ただし、以前のデータが利用可能になり始めたら、次のような csv を生成したいと考えています。
Datatitle,Date,Name,Score,Parameter,LTscore,LTParameter,LTscore+1,LTParameter+1,LTscore+2,LTParameter+3,
data,01/09/13,george,219,dataa,text,x,y,x,y,x,y
data,01/09/13,fred,219,datab,text,x,y,x,y,x,y
data,01/09/13,tom,219,datac,text,x,y,x,y,x,y
data,02/09/13,george,229,datad,text,219,dataa,x,y,x,y
data,02/09/13,fred,239,datae,text,219,datab,x,y,x,y
data,02/09/13,tom,219,dataf,text,219,datac,x,y,x,y
data,03/09/13,george,209,datag,text,229,datad,219,dataa,x,y
data,03/09/13,fred,217,datah,text,239,datae,219,datab,x,y
data,03/09/13,tom,213,datai,text,219,dataf,219,datac,x,y
data,04/09/13,george,219,dataj,text,209,datag,229,datad,219,dataa
data,04/09/13,fred,212,datak,text,217,datah,239,datae,219,datab
data,04/09/13,tom,222,datal,text,213,datai,219,dataf,219,datac
data,05/09/13,george,319,datam,text,219,dataj,209,datag,229,datad
data,05/09/13,fred,225,datan,text,212,datak,217,datah,239,datae
data,05/09/13,tom,220,datao,text,222,datal,213,datai,219,dataf
data,06/09/13,george,202,datap,text,319,datam,219,dataj,209,datag
data,06/09/13,fred,226,dataq,text,225,datan,212,datak,217,datah
data,06/09/13,tom,223,datar,text,220,datao,222,datal,213,datai
data,06/09/13,george,219,datas,text,319,datam,219,dataj,209,datag
2013 年 6 月 9 日のジョージが 2 回出現し、2 回とも同じ文字列319,datam,219,dataj,209,datag
が行に追加されていることがわかります。george が 2 回目に表示されると、3 行上の george が同じ日付であるため、同じ文字列が追加されます。(これは「現在より前の日付」を強調しているだけです。
列のタイトルからわかるように、最後の 3 つのスコアと関連する 3 つのパラメーターを収集し、それらを各行に追加しています。これは非常に単純化された例であることに注意してください。実際には、各日付には数千行が含まれますが、実際のデータには名前のパターンもありません。そのため、繰り返しパターンで fred、tom、george が隣り合っているとは考えられません。誰かがこれを達成するための最善の方法(最も効率的)を解決するのを手伝ってくれるなら、私はとても素晴らしいです. 不明な点があればお知らせください。詳細を追加します。建設的なコメントをいただければ幸いです。ありがとう