请选择 进入手机版 | 继续访问电脑版
楼主: sofa133
1979 1

[问答] 如何将这个例子中的数据集分割为不同数据集? [推广有奖]

  • 3关注
  • 5粉丝

硕士生

48%

还不是VIP/贵宾

-

威望
0
论坛币
12021 个
通用积分
14.5742
学术水平
12 点
热心指数
12 点
信用等级
11 点
经验
2920 点
帖子
71
精华
0
在线时间
218 小时
注册时间
2016-3-23
最后登录
2024-4-11

sofa133 学生认证  发表于 2017-1-13 17:15:30 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大神,现在有一个数据集如下
  F1  F2  F3  F4
  2    3    6    0
  3    2    2    1
  6   7     7    1
  4   4    4     0
  5   5    6     1
  2   3    3     1
  8   8    9     1
  7    7    7    0

其中变量F4只有 0和1 两个数字,且1 一定是连续的(至少连续出现2次)。我现在想把这个数据集按照F4拆成多个数据集,拆法就是 每一个连续的1 拆成1个数据集,例如例子里就是 生成两个数据集,一个是2条,一个是3条。

谢谢
二维码

扫码加我 拉你入群

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

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

关键词:数据集 如何

wwang111 发表于 2017-1-13 19:13:12 |显示全部楼层 |坛友微信交流群
data test1;
set test;
obs=_n_;
if f4 ne lag(f4) then num+1;
run;

proc sql;
create table test2 as
select *, count(*) as n
from test1
group by num
having n=1 or f4=0
order by obs;
quit;

data _null_;
set test2(drop=num n);
lagobs=lag(obs);
if _n_>1 and obs-lagobs ne 1;
datnum+1;
call execute('data wanted'||cats(datnum)||';set test1;where obs>'||cats(lagobs)||' and obs<'||cats(obs)||';keep f1-f4;run;');
run;
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
sofa133 + 1 + 1 + 1 精彩帖子
李会超 + 100 精彩帖子
nicksff + 1 + 1 + 1 精彩帖子
l1i2n3i4n5g + 5 + 2 + 2 + 2 观点有启发

总评分: 经验 + 100  论坛币 + 5  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 09:55