SAS读取中文比赛(一 等奖)-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

SAS软件培训

>>

SAS读取中文比赛(一 等奖)

SAS读取中文比赛(一 等奖)

发布:爱萌 | 分类:SAS软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

filenamedt'D:\Myex\Bisai';libnamert'D:\Myex\Bisai';dataRt.BChar;infiledt(Bisai.txt)lrecl=3000;lengthChar$2Hex$4IC$1z$1;retainIC'0'z'';inputByte$char1.@@;ifICne'0'thendo;Char=substr(z,1,1)||Byte;Hex=pu ...
免费学术公开课,扫码加入


filename dt 'D:\Myex\Bisai';
libname rt 'D:\Myex\Bisai';
data Rt.BChar;
infile dt(Bisai.txt) lrecl=3000;
length Char $2 Hex $4 IC $1 z $1;
retain IC '0' z '';
input Byte $char1. @@;
if IC ne '0' then do;
Char = substr(z,1,1)||Byte;
Hex = put(Char, $Hex4.);
output;
z ='';
IC='0';
end;
else do;
if put(Byte, $hex2.) < 'A0' then do;
Char = Byte;
Hex = put(Char, $Hex4.);
output;
end;
else do;
IC='1';
z = Byte;
end;
end;
keep Char Hex;
run;
proc freq data=rt.Bchar;
tables Char*Hex/out=rt.Bchfr noprint;
run;
data C1;
set Rt.Fr_ch(firstobs=3 drop=percent);
run;
data C2;
set Rt.Bchfr(firstobs=2 drop=percent);
run;
proc compare Base =C1 compare = C2;
run;
-------------------------------------------------------------
TXT2CH.SAS
-------------------------------------------------------------
filename dt 'D:\Myex\Bisai';
libname rt 'D:\Myex\Bisai';
data rt.Line(keep = LineNum Line Len_byte Len_char)
rt.Char(keep = LineNum j Char Hex)
rt.Word(keep = LineNum k Word);
length LineNum 8 Line $2400 Len_byte Len_char 8
j 8 Char $2 Hex $4
IC $1 k 8 word $20 z $20;
infile dt(Bisai.txt) lrecl=2400 truncover;
input Line $char2400.;
LineNum = _n_;
Len_byte = lengthn(Line);
Len_char = min(Len_byte, klength(Line));
output rt.Line;
IC='0'; j=1;
if Len_char ne 0 then do j=1 to Len_char;
Char = ksubstr(Line,j,1);
Hex = put(Char, $hex4.);
output rt.Char;
if notalpha(char,1)=1 then do;
if IC = '1' then do;
word = z;
output Rt.Word;
end;
if put(char, $hex4.) ge 'B040' then do;
k = j;
word = char;
IC = '2';
output Rt.Word;
end;
else IC = '3';
end;
else do;
if IC ne '1' then do;
z = char;
k = j;
IC = '1';
end;
else z = trim(z)||Char;
if j = klength(line) then do;
word=z;
output Rt.Word;
end;
end;
end;
Char = '0A0D'x;
Hex = put(Char, $hex4.);
output rt.Char;
run;
proc export data = rt.Word outfile = 'D:\Myex\Bisai\out.txt' replace;
run;
------------------------------------------------------------------------------------
TXT2CH3
------------------------------------------------------------------------------------
filename dt 'D:\Myex\Bisai';
libname rt 'D:\Myex\Bisai';
data rt.Line1;
length LineNum 8 Line $2400 Len_byte Len_char 8;
infile dt(Bisai.txt) lrecl=2400 truncover;
input line $char2400.;
LineNum = _n_;
Len_byte = lengthn(line);
Len_char = min(Len_byte, klength(line));
run;
data rt.char1;
set rt.line1;
length j 8 char $2;
j = 1;
if Len_char ne 0 then do j=1 to Len_char;
Char=ksubstr(Line,j,1);
Hex= put(Char, $hex4.);
output;
end;
Char='0A0D'x;
Hex= put(Char, $hex4.);
output;
drop Line Len_byte Len_char;
run;
data Rt.Word1(keep=LineNum k word);
set Rt.Char1 end=eof;
length IC $1 k 8 word $20 z $20;
retain IC '0' z '' k 0;
if notalpha(char,1)=1 then do;
if IC = '1' then do;
word=z;
output;
end;
if put(char, $hex4.) ge 'B040' then do;
k=j;
word=char;
IC='2';
output;
end;
else IC='3';
end;
else do;
if IC ne '1' then do;
z=char;
k=j;
IC='1';
end;
else z=trim(z)||Char;
if eof then do;
word=z;
output;
end;
end;
run;
proc export data = rt.Word1 outfile = 'D:\Myex\Bisai\out1.txt' replace;
run;
/* 以下是字符频数统计和其他用于自检的一些辅助程序 */
/* 比较生成数据集的一致性*/
proc compare base=Rt.Line compare=Rt.Line1;
run;
proc compare base=Rt.Char compare=Rt.Char1;
run;
proc compare base=Rt.Word compare=Rt.Word1;
run;
/* 行长(字节数, 字符数)统计 */
proc means data=rt.Line max sum;
var Len_byte Len_char;
run;
proc freq data=rt.char;
tables Char*Hex/out=rt.Fr_ch noprint;
run;
proc freq data=rt.Char;
tables Char*Hex/out=rt.Fr_ch noprint;
run;
proc sort data = rt.Fr_ch out = rt.Fr_chst;
by descending count;
run;
/* 比较 SAS 与 R 每行读入字符的差异 */
proc import datafile='D:\Myex\Bisai\Rll.txt' out=Rt.RLenLine replace;
run;
data rt.line_dif;
merge Rt.Line Rt.Rlenline(rename=(Lenchar=RLenchar));
Linedif = RLenchar-Len_char;
if Linedif ne 0;
run;
proc import datafile='D:\Myex\Bisai\Rfrst1.csv' out=Rt.Rfrst1 replace;
run;
proc compare base=rt.Fr_chst compare=Rt.Rfrst1;
var char count;
with char Freq;
run;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
版权归属:Jia-gang Wang, E-mail: jiagangwang@yahoo.com.cn
评论: 完成了比赛的目标同时处理行,从而证明了中文是完全可以处理的
程序可读性好,有注释文档。
参赛热情高。 一等奖+热心分数4+学术分数4+经验100
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
上面是暂定的。最终结果将结合论坛会员的评论做最后的结论。
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-927644-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
经管之家 人大经济论坛 大学 专业 手机版