楼主: zdzxd
1654 5

[原创博文] 求教关于数据读入的问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:11份资源

高中生

85%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
768 点
帖子
29
精华
0
在线时间
41 小时
注册时间
2009-10-10
最后登录
2021-1-13

楼主
zdzxd 发表于 2010-12-22 15:05:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现有一个数据流:a23 223 bc4 36 3c5 11d 400 620,按下面要求创建SAS数据集。
用语句input id $ no;
变量id取值上面数据流里的a23, bc4, 11d ,变量no取值233,36,400。但是这个数据流存在问题:如有的id没有no,有的no没有id。创建SAS数据集,删除只有id没有no或者只有no没有id的观测,即把上面的3c5620去掉,最后得到三个观测:

a23   223

bc4   36

11d   400

这道题想了很久,不知道怎么才能让no读到11d时跳过,而把11d读到id里去。谢谢各位高手啦!

二维码

扫码加我 拉你入群

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

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

关键词:数据读入 sas数据集 Input 数据流 数据集 数据流

回帖推荐

frackdeng 发表于5楼  查看完整内容

data a; input a $ @@; length id $8; id=lag(a); no=input(a,??best.); if no^=. and input(id,??best.)=. then output; drop a; cards; a23 223 bc4 36 3c5 11d 400 620 ; run;

本帖被以下文库推荐

沙发
elek.me 发表于 2010-12-22 16:38:33
id應該不會出現純數字的情況吧?
我的博客: http://elek.me/sas
联系我: http://about.me/elek

藤椅
zdzxd 发表于 2010-12-22 16:50:24
这里规定了id是字符型,而no是数值型,但问题是题目给的数据流并不是按一个字符型一个数值型这样排列的呀??
2# elek.me

板凳
elek.me 发表于 2010-12-22 18:08:43
马上去吃饭了,先上个比较蹩脚的方法,回头想一下:
  1. data have;
  2.         input var1 $ @;
  3.         if not prxmatch('m/\b\d+\b/',var1) then do;
  4.                 input var2 $ @;
  5.                         len=length(var2)+1;
  6.                         if prxmatch('m/\b\d+\b/',var2) then do;
  7.                                 input @@;
  8.                                 output;
  9.                         end;
  10.                         else input +(-len) @@;
  11.         end;
  12.         else input @@;
  13.         drop len;
  14. cards;
  15. 12 a23 223 bc4 36 3c5 11d 400 w 620
  16. ;
复制代码
已有 1 人评分论坛币 学术水平 收起 理由
论坛数据分析 + 100 + 2 好的意见建议

总评分: 论坛币 + 100  学术水平 + 2   查看全部评分

我的博客: http://elek.me/sas
联系我: http://about.me/elek

报纸
frackdeng 发表于 2010-12-23 10:19:28
data a;
        input a $ @@;
        length id $8;
        id=lag(a);
        no=input(a,??best.);
        if no^=. and input(id,??best.)=. then output;
        drop a;
        cards;
        a23 223 bc4 36 3c5 11d 400 620
;
run;

地板
zdzxd 发表于 2010-12-24 13:55:59
谢谢楼上二位啦!!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 00:38