通过条件(R或SAS)的先前观察替换缺失值

时间:2017-08-06 16:35:59

标签: r sas

我有persion-period数据集,我试图创建时间相关的协变量。 目前我的数据看起来像这样。变量chg&帮助只是我在创建此数据时所做的变量。

ID time status chg help parent married child 
1 0 P 0 . 0 0 0
1 1 P 0 . 0 0 0
1 2 P 1 . 0 0 0
1 3 M 0 P 1 0 0
1 4 M 0 . 0 0 0
1 5 M 0 . 0 0 0
1 5 M 0 . 0 0 0
2 0 P 0 . 0 0 0
2 1 P 1 . 0 0 0
2 2 L 0 P 1 0 0
2 3 L 0 . 0 0 0
2 4 L 1 . 0 0 0
2 5 M 0 L 0 1 0
2 6 M 0 . 0 0 0 

我试图“拯救”'这些协变量(父子结婚),例如,如果在时间t = 3,父= 1,那么在时间t = 4(并且到达跟进结束时),父变量应保持在父= 1。

所以正确的数据应该是这样的

ID time status chg help parent married child 
1 0 P 0 . 0 0 0
1 1 P 0 . 0 0 0
1 2 P 1 . 0 0 0
1 3 M 0 P 1 0 0
1 4 M 0 . 1 0 0
1 5 M 0 . 1 0 0
1 6 M 0 . 1 0 0
2 0 P 0 . 0 0 0
2 1 P 1 . 0 0 0
2 2 L 0 P 1 0 0
2 3 L 0 . 1 0 0
2 4 L 1 . 1 0 0
2 5 M 0 L 1 1 0
2 6 M 0 . 1 1 0 

对R或SAS的任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:0)

on_button_clocked()中,我们可以在按ID'

分组后得到感兴趣变量的累积总和(R
cumsum

答案 1 :(得分:0)

SAS中,您可以使用RETAINLAST.varible来获取累计金额。

Data origin_dataset;
    infile 'Your raw data folder';
    input ID time status $ chg help $ parent married child;
Run;

Data temp;
    Set origin_dataset;
    By ID;
    Retain parent_t married_t child_t;
    parent = SUM(parent_t, parent); parent_t = parent;
    married = SUM(married_t, married); married_t = married;
    child = SUM(child_t, child); child_t = child;
    If LAST.ID = 1 Then DO;
        parent_t = 0;
        married_t = 0;
        child_t = 0;
    END;
Run;

Proc print data = temp (drop = parent_t married_t child_t);
Run;