请选择 进入手机版 | 继续访问电脑版
楼主: Imasasor
2633 9

利用sas对文本数据进行个性化修改 [推广有奖]

  • 1关注
  • 64粉丝

VIP

学科带头人

34%

还不是VIP/贵宾

-

TA的文库  其他...

超哥喜欢的文章

威望
1
论坛币
47033 个
通用积分
3.1376
学术水平
238 点
热心指数
246 点
信用等级
231 点
经验
36320 点
帖子
866
精华
3
在线时间
2234 小时
注册时间
2012-7-4
最后登录
2023-9-20

初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章

Imasasor 发表于 2012-12-25 16:07:22 |显示全部楼层 |坛友微信交流群
100论坛币
test.txt (932 Bytes)


数据见附件,数据截图如下:

QQ截图.jpg


我想把文件中的变量名两边加上{},如第一行name变成{name}, 居住地一行juzhudi变成{juzhudi}。
除此之外,其它部分都不要变化,如每行前面的空格数,有些地方有空行等等。

变量名满足的条件:与sas变量名满足的条件一样(可以有字母和数字),不过没有_符号。

求高手。txt进sas,还要sas出txt,出来的txt与原有结构一样,只微修改一下。

test.txt

947 Bytes

最佳答案

ziyenano 查看完整内容

写漏了一个判别~ data ex; length x $100; infile "E:\test.txt" ; input; x=_infile_; run; data _null_; set ex; if _n_=1 then do; retain id; id=prxparse("s/[A-Za-z]{1}[a-zA-Z0-9]+\b(?= )/{$0}/"); end; call prxchange(id,-1,x); file "E:\test1.txt"; put x $100.; run;
关键词:文本数据 个性化 name uzhu txt 字母

回帖推荐

本帖被以下文库推荐

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;
ziyenano 发表于 2012-12-25 16:07:23 |显示全部楼层 |坛友微信交流群
Imasasor 发表于 2012-12-25 18:33
第四行的被错误地加了{}
写漏了一个判别~
data ex;
length x $100;
infile "E:\test.txt" ;
input;
x=_infile_;
run;

data _null_;
set ex;
if _n_=1 then do;
retain id;
id=prxparse("s/[A-Za-z]{1}[a-zA-Z0-9]+\b(?= )/{$0}/");
end;
call prxchange(id,-1,x);
file "E:\test1.txt";
put x $100.;
run;

使用道具

  1. filename raw 'd:test.txt';
  2. data _null_;
  3.     infile raw truncover;
  4.     file 'd:test1.txt';
  5.     input string $char100.;
  6.     string=prxchange('s/(:|\s)([a-z]+)/$1{$2}/',-1,string);
  7.     put string $100.;
  8. run;
复制代码

已有 6 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
webgu + 1 + 1 + 1 精彩帖子
zhentao + 1 + 1 + 1 观点有启发
davil2000 + 5 + 5 + 5 观点有启发
Imasasor + 36 + 60 + 2 + 2 + 2 精彩帖子
ziyenano + 1 + 1 + 1 观点有启发

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

欢迎加入SAS群:144839730-蜗牛

使用道具

466046020 发表于 2012-12-25 17:32:40 |显示全部楼层 |坛友微信交流群
老师她摸我 发表于 2012-12-25 17:23
嗯!不错!高手!

使用道具

ziyenano 发表于 2012-12-25 17:40:29 |显示全部楼层 |坛友微信交流群
data ex;
length x $100;
infile "E:\test.txt" ;
input;
x=_infile_;
run;

data _null_;
set ex;
if _n_=1 then do;
retain id;
id=prxparse("s/[A-Za-z]{1}[a-zA-Z0-9]+\b/{$0}/");
end;
call prxchange(id,-1,x);
file "E:\test1.txt";
put x $100.;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 精彩帖子

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

使用道具

学习学习。佩服啊

使用道具

Imasasor 发表于 2012-12-25 18:33:22 |显示全部楼层 |坛友微信交流群
ziyenano 发表于 2012-12-25 17:40
data ex;
length x $100;
infile "E:\test.txt" ;
第四行的<yyyy/mm/dd>被错误地加了{}
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

zhentao 发表于 2012-12-26 10:36:54 |显示全部楼层 |坛友微信交流群
老师她摸我 发表于 2012-12-25 17:23
你好,
我想问一下,这样跑完了以后还能和楼主要求的一样的那个txt文件的结构吗?
谢谢。

使用道具

webgu 发表于 2012-12-26 20:31:58 |显示全部楼层 |坛友微信交流群
好像都还是欠完美的解决问题、
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

Imasasor 发表于 2012-12-27 16:32:09 |显示全部楼层 |坛友微信交流群
  1. %let folder=L:\;
  2. /*将上面的改为记事本文件所在位置,记事本文件名为test.txt,修完后,直接运行全部程序,会在原文件夹内多出一个text加括号的txt文件*/
  3. /*以下程序不需要修改*/
  4. data a;
  5. infile "&folder.test.txt" dlm="|" truncover lrecl=300;
  6. input;
  7. x=_infile_;
  8. run;

  9. data b(keep=x y);
  10. set a;
  11. length token $ 12;
  12. length y $ 300;
  13. i=1;
  14. retain y;
  15. y=x;
  16. do until(token="");
  17. token=scan(x,i,"0123456789abcdefghijklmnopqrstuvwxyz</>","ki");
  18. c=compress(token,"","kda");
  19. if c=token and notdigit(strip(c))=1 then do;
  20. y=tranwrd(y,strip(c)||"","{"||strip(c)||"} ");
  21. end;
  22. i+1;
  23. end;
  24. run;

  25. data _null_;
  26. set b;
  27. file "&folder.text加括号.txt" lrecl=300;
  28. put y $300.;
  29. run;
复制代码
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

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

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

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

GMT+8, 2024-4-18 17:55