SAS中文论坛

标题: 一个将首字母变大写的sas macro [打印本页]

作者: shiyiming    时间: 2008-1-9 13:58
标题: 一个将首字母变大写的sas macro
%macro firstup(data = , var = );
        data temp;
                set &data;
                &var = ' ' || trim(left(lowcase(&var)));
        run;

        data firstup;
                set temp;
                i = 0;  
                do until(i = 0);  
                        i = anyspace(&var, i + 1);  
                        c = upcase(substr(&var, i + 1, 1));  
                        substr(&var, i + 1, 1) = c;
                end;
                &var = left(&var);
                drop i c;
        run;
%mend firstup;

data a;
        format a $20.;
        a = 'aaa bbb ccc';
run;

%firstup(data = a, var = a);
作者: shiyiming    时间: 2008-1-9 19:04
标题: Re: 一个将首字母变大写的sas macro
[code:jvo46lsm]data a;
input x $char20.;
y=length(x)-length(left(x))+1;
substr(x,y,1)=upcase(substr(x,y,1));
drop y;
cards;
ab
  cd
e f
    de
;
run;[/code:jvo46lsm]
作者: shiyiming    时间: 2008-1-9 21:33
标题: 不用那么复杂,偶来个简单的
[code:hghfngv7]data a;
format a $20.;
a = 'aaa bbb ccc';
b=propcase(a);
run;[/code:hghfngv7]
注:该函数V9中有效
作者: shiyiming    时间: 2008-1-10 09:56
标题: Re: 一个将首字母变大写的sas macro
我写的macro是将每个英文单词的首字母变大字, 不是只将第一个单词的首字母变大写.
作者: shiyiming    时间: 2008-1-10 11:16
标题: Re: 一个将首字母变大写的sas macro
是啊,propcase函数的功能就是将每个英文单词的首字母变大字啊。
作者: shiyiming    时间: 2008-1-10 11:53
标题: Re: 一个将首字母变大写的sas macro
管理员的代码在针对这种空格分开的字符中确实是最简单的
我只看了你的标题,没有看代码反映的内容(误解了你真实的意图),下次改正。
作者: shiyiming    时间: 2008-1-10 12:53
标题: Re: 一个将首字母变大写的sas macro
propcase() 这个function不错, 收下了, 谢过!
作者: shiyiming    时间: 2008-1-10 12:55
标题: Re: 一个将首字母变大写的sas macro
我过去用SAS9.0, 没有propcase() function, 现在改用SAS9.1.3.
作者: shiyiming    时间: 2008-1-11 19:14
标题: Re: 一个将首字母变大写的sas macro
propcase function工作原理:先把所有字符转变为小写,然后按照指定的分割复将首字母转为大写
作者: shiyiming    时间: 2008-1-15 10:46
标题: Re: 一个将首字母变大写的sas macro
[quote="byes":ebkx155i]propcase function工作原理:先把所有字符转变为小写,然后按照指定的分割复将首字母转为大写[/quote:ebkx155i]

跟我写的macro的思路不谋而合
作者: shiyiming    时间: 2008-1-16 15:44
标题: Re: 一个将首字母变大写的sas macro
版主真是很牛
作者: shiyiming    时间: 2008-1-28 15:16
标题: Re: 一个将首字母变大写的sas macro
楼主的程序好多多余的地方哦
%macro firstup(data, var);
data temp;
set &data;
&var = ' ' || trim(lowcase(&var));                  left可以不要                 
run;

data firstup;
set temp;                                                    i=0可以省略
do until(i = 0);
i = anyspace(&var, i + 1);
substr(&var, i + 1, 1) = upcase(substr(&var, i + 1, 1));        干吗非要引入c呢? 岂非浪费资源
end;
&var = trim(&var);
drop i;                                                        这下可以少drop一个column了哦
run;
%mend firstup;
作者: shiyiming    时间: 2008-1-28 16:06
标题: Re: 一个将首字母变大写的sas macro
来个不要||的,不过怎么都没有propcase好了 <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? -->
%macro firstup(data, var);
data temp;
set &amp;data;
&amp;var=trim(lowcase(&amp;var));
substr(&amp;var,1,1)=upcase(substr(&amp;var,1,1));
do until(i=0);
i=anyspace(&amp;var,i+1);
substr(&amp;var, i + 1, 1) = upcase(substr(&amp;var, i + 1, 1));
end;
drop i;
run;
%mend firstup;




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2