ここで尋ねられた質問 ( R: Applyingcumulative sum function and filling data gaps with NA for plotting ) を少し分解して、より小さなサンプルを投稿するように依頼されました。これが私のサンプルデータです: https://dl.dropboxusercontent.com/u/16277659/inputdata.csv
NAME; ID; SURVEY_YEAR; REFERENCE_YEAR; VALUE
SAMPLE1; 253; 1883; 1883; 0
SAMPLE1; 253; 1884; 1883; NA
SAMPLE1; 253; 1885; 1884; 12
SAMPLE1; 253; 1890; 1889; 17
SAMPLE2; 261; 1991; 1991; 0
SAMPLE2; 261; 1992; 1991; -19
SAMPLE2; 261; 1994; 1992; -58
SAMPLE2; 261; 1995; 1994; -40
列 VALUE の累積合計を計算し、その間の年のデータ ギャップを NA 値で埋めたいと思います (さらに処理するために他の列が必要なため、データの構造は同じである必要があります)。
データのギャップを埋める場合、SAMPLE1 のように NA を埋める必要があります。CUMSUM 列に複数の NA を入力する場合は、NA の後の値の位置に注意してください (たとえば、最後の CUMSUM 値は、VALUE の最後の NA に加えて入力する必要があります (プロットの理由で使用されます)。
例外として、REFERENCE_YEAR と SURVEY_YEAR の間の期間が 1 年を超える場合は、SAMPLE2 のように 1992 年から 1994 年までの期間の値を列に書き込む必要があります。
これは単なるサンプル データセットです。実際のデータセットは、いくつかの列と約 40000 行で構成されています。BaseRのソリューションが最適です。各 SAMPLE の最初の行で REFERENCE_YEAR と SURVEY_YEAR が等しいのは、各グループのゼロ列を書き込むために使用するコードの結果です。
NAME; ID; SURVEY_YEAR; REFERENCE_YEAR; VALUE; CUMSUM
SAMPLE1; 253; 1883; 1883; 0; 0
SAMPLE1; 253; 1884; 1883; NA; NA
SAMPLE1; 253; 1885; 1884; 12; 12
SAMPLE1; 253; 1886; 1885; NA; NA
SAMPLE1; 253; 1887; 1886; NA; NA
SAMPLE1; 253; 1888; 1887; NA; NA
SAMPLE1; 253; 1889; 1888; NA; 12
SAMPLE1; 253; 1890; 1889; 17; 29
SAMPLE2; 261; 1991; 1991; 0; 0
SAMPLE2; 261; 1992; 1991; -19; -19
SAMPLE2; 261; 1993; 1992; -58; -77
SAMPLE2; 261; 1994; 1992; -58; -77
SAMPLE2; 261; 1995; 1994; -40; -117