有人要求我稍微分解一下我在这里提出的问题(R:应用累积和函数并用 NA 填充数据间隙进行绘图)并发布一个较小的样本。在这里,您可以在这里找到我的示例数据: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 后面的值的位置(例如,除了 VALUE 中的最后一个 NA(用于绘图原因)之外,应填写最后一个 CUMSUM 值。
REFERENCE_YEAR 和 SURVEY_YEAR 之间的期间大于一年的情况是一个例外,应将值写入列中,如 1992 年至 1994 年期间的 SAMPLE2 中的值。
这只是一个示例数据集,我的实际数据集由几列和大约 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