首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按组复制SAS中的值

按组复制SAS中的值
EN

Stack Overflow用户
提问于 2019-07-25 15:53:42
回答 1查看 113关注 0票数 1

我有一个数据集,其中包含一个测量和它收集的具体日期。我想在几天之间复制这些值,直到最后一天。例如,以下是复制数据之前的数据:

代码语言:javascript
复制
           Measurement    Day
Subject1   .85            -1
Subject1   .86            1            
Subject1   .91            7            
Subject1   .83            9            
Subject2   .77            0            
Subject2   .82            5            
Subject2   .86            12           

我想修改上面的数据集,如下所示:

代码语言:javascript
复制
           Measurement    Day
Subject1   .85            -1
Subject1   .85            0
Subject1   .86            1
Subject1   .86            2
Subject1   .86            3
Subject1   .86            4
Subject1   .86            5 
Subject1   .86            6           
Subject1   .91            7
Subject1   .91            8            
Subject1   .83            9            
Subject2   .77            0
Subject2   .77            1
Subject2   .77            2
Subject2   .77            3
Subject2   .77            4       
Subject2   .82            5          
Subject2   .82            6
Subject2   .82            7     
Subject2   .82            8     
Subject2   .82            9     
Subject2   .82            10
Subject2   .82            11                      
Subject2   .86            12           
EN

回答 1

Stack Overflow用户

发布于 2019-07-25 17:16:55

考虑使用辅助数据集展开数据,然后使用左联接merge并进行前向填充。

代码语言:javascript
复制
data helper;
    set input (keep = Subject Day);
    by Subject;
    if not first.Subject and last.Subject;

    max_day = max(Day);
    day = 0;
    do until(day > max_day);
      output;
      day + 1;
    end;

    drop max_day;
run;

data output;
    merge helper (in=h)
          input (in=i);
    if h;
    by Subject Day;

    retain _k;
    if not missing(Measurement) then _k=Measurement;
    else if missing(Measurement) then Measurement=_k;

    if not missing(Measurement);
    drop _k;
run;

数据

代码语言:javascript
复制
data input;
    infile datalines delimiter=',' DSD; 
    length subject $ 10;

    input subject measurement day;
    datalines;
Subject1,.86,1 
Subject1,.91,7 
Subject1,.83,9 
Subject2,.77,0 
Subject2,.82,5 
Subject2,.86,12
;

输出

代码语言:javascript
复制
Obs  subject   day   measurement 
1   Subject1     1          0.86 
2   Subject1     2          0.86 
3   Subject1     3          0.86 
4   Subject1     4          0.86 
5   Subject1     5          0.86 
6   Subject1     6          0.86 
7   Subject1     7          0.91 
8   Subject1     8          0.91 
9   Subject1     9          0.83 
10  Subject2     0          0.77 
11  Subject2     1          0.77 
12  Subject2     2          0.77 
13  Subject2     3          0.77 
14  Subject2     4          0.77 
15  Subject2     5          0.82 
16  Subject2     6          0.82 
17  Subject2     7          0.82 
18  Subject2     8          0.82 
19  Subject2     9          0.82 
20  Subject2     10         0.82 
21  Subject2     11         0.82 
22  Subject2     12         0.86 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57205986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档