turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

Topic Options

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-02-2011 01:20 PM

Hi all,

at first an example:

**PROC** **IML**;

a = {**1** **2** **3**} ; b = {**1**,**2**,**3**}; c = {**1** **2** **3**, **2** **3** **4**, **3** **4** **5**} ;

ssq_a = SSQ(a);

sum_b = SUM(b);

median_c = MEDIAN(c);

print a b c ssq_a sum_b median_c ;

std_a = STD(a) ;

std_c = STD(c) ;

print std_a std_c ;

**QUIT** ; *proc iml ;

My question: In the SAS Online Doc: http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/viewer.htm#langref_sect315.htm there is a list of the "Base SAS Functions Accessible from SAS/IML". As you can see, if you run the example above, only some of the listed base functions work, like SUM, SSQ or MEDIAN, but not STD or CV. How can I use the sas base functions like STD, CV,... in IML?

Thank you in advance for every tip, best regards,

saibot

Accepted Solutions

Solution

11-02-2011
01:30 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to saibot

11-02-2011 01:30 PM

1) This issue is discussed and solved in Section 4.9 of my book, *Statistical Programming with SAS/IML Software*.

2) If you are using SAS IML 9.22 or beyond, you can use the VAR function, and of course STD=sqrt(VAR(..)). SAS 9.3 supports the STD function directly.

For more on this topic, see my blog: http://blogs.sas.com/content/iml/2011/06/08/calling-base-sas-functions-from-sasiml-how-to-handle-arg...

All Replies

Solution

11-02-2011
01:30 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to saibot

11-02-2011 01:30 PM

1) This issue is discussed and solved in Section 4.9 of my book, *Statistical Programming with SAS/IML Software*.

2) If you are using SAS IML 9.22 or beyond, you can use the VAR function, and of course STD=sqrt(VAR(..)). SAS 9.3 supports the STD function directly.

For more on this topic, see my blog: http://blogs.sas.com/content/iml/2011/06/08/calling-base-sas-functions-from-sasiml-how-to-handle-arg...

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to Rick_SAS

11-03-2011 07:28 AM

Thank you very much for your help, Rick. I tried the function GetArgList that you proposed in your blog and it worked fine.

I am very surprised that the use of such elementary functions in IML is so complicated. In some cases, for example for such simple functions like STD or CV, the programming "by hand" is easier to read than the three steps "GetArgList --> Creation of Macro Variable --> Use of SAS-Base function with macro variable". But as more base functions are available in higher SAS versions, it seems that SAS is working on that topic.

Thank you and best regards,

saibot