全部版块 我的主页
论坛 测试 十三区 SAS上传下载区
866 2
2021-09-07
原始数据如下(可copy到excel或txt中,当然要分列处理之):
series        rise        drop
1        1       
2                -1
3        1        -1
4        1       
5        1        -1
6        1       
7        1       
8                -1
9                -1
10               
11        1       
12               
13               
14        1       
15        1       
16        1        -1
17        1       
18        1       
19                -1
20               
21        1       
22        1        -1
23                -1
24                -1
25        1       


期望结果:
seriesrisedropsum
1

1

 

1

2 

-1

-1

3

1

-1

2

4

1

 

1

5

1

-1

2

6

1

 

1

7

1

 

1

8 

-1

-1

9 

-1

-1

10  

0

11

1

 

1

12  

0

13  

0

14

1

 

1

15

1

 

1

16

1

-1

2

17

1

 

1

18

1

 

1

19 

-1

-1

20  

0

21

1

 

1

22

1

-1

2

23 

-1

-1

24 

-1

-1

25

1

 

1

解释:
新生成sum列
若rise列与drop列都不是空格,则sum返回2。
若rise列或drop列任意1列为空格,则sum=rise+drop。
用SAS、Python、jave等任意1个工具实现

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-9-7 00:20:50
加一个需求:统计sum列里面2、1、-1、0出现次数!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2024-3-8 09:38:44
sas语言,希望能帮到你
data calculated;
    set input_data;
    if rise = . or drop = . then do;
        if rise = . then rise = 0; /* 如果rise为空格,则视为0 */
        if drop = . then drop = 0; /* 如果drop为空格,则视为0 */
        sum = rise + drop; /* 若rise列或drop列任意1列为空格,则sum=rise+drop */
    end;
    else sum = 2;
run;

/* 统计sum列里面2、1、-1、0出现次数 */
proc sql;
create table test as
    select sum, count(*) as frequency
    from calculated
    where sum in (2, 1, -1, 0)
    group by sum
    order by sum;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群