楼主: jpingl1273
3793 20

[原创博文] 求sas程序 [推广有奖]

  • 1关注
  • 2粉丝

已卖:395份资源

副教授

77%

还不是VIP/贵宾

-

威望
0
论坛币
3016 个
通用积分
12.0407
学术水平
6 点
热心指数
12 点
信用等级
7 点
经验
1439 点
帖子
634
精华
0
在线时间
1294 小时
注册时间
2008-9-5
最后登录
2024-10-15

楼主
jpingl1273 发表于 2011-4-12 21:32:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有如下数据
73.499878
87.406372
38.898289
163.500153
100.398247
207.5
168.703308
29.898287
963.000122
45.898289
185.601715
972.999878
9.8984
15.203313
42.695187
834.999939
216.500061
444.703247
20.601563
79.093628
273
273.000061
396.906311
406.296722
49.796963
75.601501
现在要求选出小于100的数据,且小于100的数据如果是两个或两个以上是连续的话作为一组,现在要求出组数和各组的数据的总数字!
急求,谢谢
二维码

扫码加我 拉你入群

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

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

关键词:sas程序 程序

回帖推荐

myc_sas 发表于2楼  查看完整内容

写了个小程序,不知道是不是你所需要的。你原数据数值那么多小数懒得写了,自己随便写了些数上去。如果可行,你自己改下吧。 data test; infile datalines; input i; datalines; 70 80 30 160 110 200 168 30 963 45 185 972 9 15 42 ; run; data test2(drop=i); set test end=last; if i0 then do; output; j=0; end; if last and j>0 then do; ...

本帖被以下文库推荐

沙发
myc_sas 发表于 2011-4-12 21:59:25
写了个小程序,不知道是不是你所需要的。你原数据数值那么多小数懒得写了,自己随便写了些数上去。如果可行,你自己改下吧。

data test;
    infile datalines;
    input i;
    datalines;
70
80
30
160
110
200
168
30
963
45
185
972
9
15
42
;
run;

data
test2(drop=i);
    set test end=last;
    if i<100 then do;
        retain i;
        j+i;
        retain j;
    end;
    else if j>0 then do;
        output;
        j=
0;
    end;
    if last and j>0 then do;
        output;
    end;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
baoaibaobao 发表于 2011-4-12 22:03:38
{:2_29:}

板凳
jpingl1273 发表于 2011-4-12 23:36:27
呵呵  谢谢你哈 ! 2# myc_sas

报纸
jpingl1273 发表于 2011-4-12 23:42:15
你好! 谢谢你对本帖的建议和讨论,但是运行程序后发现所得到的结论和原始的意义不同,原始的意义是想要小于100的数据,且小于100的数据如果两个或是两个以上连在一起的话归为一组,最后求出这样的组数和这些组中数据的个数!(就是这些连在一起且小于100的数据一共有多少个) 3# baoaibaobao

地板
jpingl1273 发表于 2011-4-12 23:46:31
就像你写的这个程序 第二组只有一个数值30符合小于100的要求,所以这个数值不能归为一组,不能算作一组,因此不计入本次提取的数值的组数,后面的几个均不符合要求,因此你的这组数据值有前面的三个数据算为一组,仅此一组而已,所以这个数据最后提取出来应该只有一组,三个数据,得出的结论应该是组数:1
总的数据数:3 2# myc_sas

7
jpingl1273 发表于 2011-4-12 23:47:21
你好! 谢谢你对本帖的建议和讨论,但是运行程序后发现所得到的结论和原始的意义不同,原始的意义是想要小于100的数据,且小于100的数据如果两个或是两个以上连在一起的话归为一组,最后求出这样的组数和这些组中数据的个数!(就是这些连在一起且小于100的数据一共有多少个) 2# myc_sas

8
myc_sas 发表于 2011-4-13 00:14:44
哦,第一个问题是我没看清楚,就是说如果两个大于100的数之间只有一个小于100的,这个也应该忽略,对吧。

不过,你说我给的例子里只有一组?为什么最后3个不算作一组呢?还有,你要组数,以及每组的个数,而不是每组的数字和?

9
myc_sas 发表于 2011-4-13 00:24:24
看看这个对不对吧,结果出来,j应该是每个组的个数,一共有多少行,就有多少组。

data test2(drop=i);
    set test end=last;
    if i<100 then do;
        j+
1;
    end;
    else do;
        if j>1 then do;
            output;
        end;
        j=
0;
    end;
run;

10
jpingl1273 发表于 2011-4-13 08:48:57
谢谢你,还是不对,如果数据集改成这样的话
70
80
30
160
110
200
168
30
963
45
185
972
9
15
42
123
34
44
55
88
99
结果出来两组 但是每组只有三个,运行一下看看test2,
应该总共有三组才对,第一组是3个 第二组是3个,第三组5个才对
应该对才是 9# myc_sas

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 03:40