楼主: wgwu
2934 11

[原创博文] 求助一个SAS base 编程实现 [推广有奖]

  • 0关注
  • 0粉丝

大专生

13%

还不是VIP/贵宾

-

威望
0
论坛币
64 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
144 点
帖子
16
精华
0
在线时间
65 小时
注册时间
2009-7-27
最后登录
2011-5-30

楼主
wgwu 发表于 2010-7-8 17:50:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如下格式文本(txt)
a b
1 2 3 4
5 6 2 3
c d
1 3 4 5
转化为
a b 1 2
a b 3 4
a b 5 6
a b 2 3
c d 1 3
c d 4 5

怎么编程实现,急用,多谢
二维码

扫码加我 拉你入群

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

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

关键词:SAS base Base 怎么编程 txt 怎么编程

本帖被以下文库推荐

沙发
crackman 发表于 2010-7-8 20:37:02
我也想知道

藤椅
crackman 发表于 2010-7-8 20:45:35
我也想知道

板凳
jingju11 发表于 2010-7-8 21:07:32
wgwu 发表于 2010-7-8 17:50
如下格式文本(txt)
a b
1 2 3 4
5 6 2 3
c d
1 3 4 5
转化为
a b 1 2
a b 3 4
a b 5 6
a b 2 3
c d 1 3
c d 4 5

怎么编程实现,急用,多谢

  1. data have;
  2. if _n_ = 1 then do;
  3.    input x1 $ x2 $;
  4.    delete;
  5. end;
  6. retain x1 x2;
  7. input x3 $ x4 $@@;
  8. if (anyalpha(x3) or anyalpha(x4)) then do;
  9.   x1 = x3; x2 = x4;
  10.   delete;
  11. end;  
  12. cards;
  13. a b
  14. 1 2 3 4
  15. 5 6 2 3
  16. c d
  17. 1 3 4 5
  18. ;
复制代码
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Eternal0601 + 1 + 1 + 1 精彩帖子
pobel + 1 + 1 精彩帖子
crackman + 100 + 100 + 1 + 1 不错
BraveMadMan + 1 + 1

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

报纸
BraveMadMan 发表于 2010-7-8 21:15:15
4# jingju11

学习了
Don't get lost in technical details. What is the big picture?

地板
pobel 在职认证  发表于 2010-7-9 07:52:53
data a;
retain c1 c2;
infile cards column=column;
M=column;
input test : $1. @;
if M>column then M=1;
if test="a" or test="c" then input @M c1 $ c2 $;
else input @M c3 c4 @@;
if c3 ne .;
keep c1-c4;
datalines;
a b
1 2 3 4
5 6 2 3
c d
1 3 4 5
;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Eternal0601 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

和谐拯救危机

7
wgwu 发表于 2010-7-9 10:06:59
dear  jingju11, and pobel ,
thank s for your kind and jobs,
今日事,今日毕

8
Eternal0601 发表于 2013-5-7 16:05:37
pobel 发表于 2010-7-9 07:52
data a;
retain c1 c2;
infile cards column=column;
Hi,pobel大侠,对您的程序加了几句代码,运行后变量M,M2,M3值是一样的,而跟M11,M12却不同,希望您能帮忙解释下,谢谢!

data a7;
retain c1 c2;
infile cards column=column;

M=column;
input test : $1. @;

M11=M;         *add1;
M12=column;  *add2;

if M>column then M=1;   
M2=M;  *add3;
if test="a" or test="c" then input @M c1 $ c2 $;
else input @M c3 c4 @@;         

M3=M;  *add4;

*if c3 ne .;   

*keep c1-c4;
datalines;
a b
1 2 3 4
5 6 2 3
c d
1 3 4 5
;
run;

proc print data=a7;
run;

9
pobel 在职认证  发表于 2013-5-7 17:06:00
Eternal0601 发表于 2013-5-7 16:05
Hi,pobel大侠,对您的程序加了几句代码,运行后变量M,M2,M3值是一样的,而跟M11,M12却不同,希望您能帮忙解 ...
1. M2=M; 和M3=M;这两句之间和之后没有对变量M的修改,所以M,M2,和M3这三个变量的值在数据集中一定会是相同的;
2. COLUMN=变量是SAS读取数据过程中所在的列,在执行INPUT test : $1. @ 语句后,COLUMN变量的值会相应发生变化。M11是INPUT语句前的位置,而M12是INPUT语句后的位置,所以不一样;

您可以在程序中加如PUT语句来显示执行过程中这些变量的值分别是什么。
和谐拯救危机

10
Eternal0601 发表于 2013-5-7 17:55:31
pobel 发表于 2013-5-7 17:06
1. M2=M; 和M3=M;这两句之间和之后没有对变量M的修改,所以M,M2,和M3这三个变量的值在数据集中一定会是 ...
喔,总感觉M11应该跟M相等的,我再揣摩下,非常感谢!

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

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