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

Showing results for

Find a Community

- Home
- /
- Analytics
- /
- Stat Procs
- /
- Translate code from R to SAS

- Subscribe to 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
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

09-11-2014 12:01 PM

How do I translate this R code to SAS:

library(lme4)

sim<-function(m,n,b0=1,b1=-.5,b2=-1,testlow=1,testhi=10,xtest,xolftrue){

a0hat<-0

b0hat<-0

b1hat<-0

b2hat<-0

d0hat<-0

c0hat<-0

c1hat<-0

c2hat<-0

c3hat<-0

for(i in 1:m){

olf<-runif(n,1,10)

olftrue<-as.vector(t(matrix(olf,nrow=n,ncol=10,byrow=F)))

test<-sample(testlow:testhi,n,replace=T)

olftest<-ifelse(olf<test,test,0)

olfind<-ifelse(olf<test,1,0)

olft<-matrix(0,nrow=n,ncol=10,byrow=T)

olft[cbind(1:n,olftest)]<-1

olft<-t(apply(olft,1,cumsum))

olft<-as.vector(t(matrix(olft,nrow=n*10,ncol=1,byrow=T)))

x<-rnorm(n,3,1)

mx<-matrix(x,nrow=n*10,ncol=1,byrow=T)

x<-as.vector(mx)

alpha<-rnorm(n,0,.5)

malpha<-matrix(alpha,nrow=n*10,ncol=1,byrow=T)

alpha<-as.vector(malpha)

eps<-rnorm(n*10,0,1)

time<-matrix(1:10,nrow=n*10,ncol=1,byrow=T)

time<-as.vector(time)

time1<-pmin(time,olftrue)

time2<-pmax(time-olftrue,0)

y<-alpha+b0*x+b1*time1+b2*time2+eps

id<-as.vector(t(matrix(1:n,nrow=n,ncol=10,byrow=F)))

ot<-olft*time

try<-lmer(y~1+(1|id)+x+time1+time2)

a0hat<-a0hat+fixef(try)[[1]]

b0hat<-b0hat+fixef(try)[[2]]

b1hat<-b1hat+fixef(try)[[3]]

b2hat<-b2hat+fixef(try)[[4]]

timenew<-time-as.vector(t(matrix(olftest,nrow=n,ncol=10,byrow=F)))

olfind<-as.vector(t(matrix(olfind,nrow=n,ncol=10,byrow=F)))

try2<-lmer(y~1+(1|id)+x+timenew+olfind+timenew*olfind)

d0hat<-d0hat+fixef(try2)[[1]]

c0hat<-c0hat+fixef(try2)[[2]]

c1hat<-c1hat+fixef(try2)[[3]]

c2hat<-c2hat+fixef(try2)[[4]]

c3hat<-c3hat+fixef(try2)[[5]]

}

Accepted Solutions

Solution

09-11-2014
01:15 PM

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

09-11-2014 01:15 PM

Here is a more recent version of the documenation: SAS/IML(R) 13.1 User's Guide

All Replies

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

09-11-2014 12:18 PM

You probably have to learn IML programming, or hire one to do it for. There are some tools out there, but I doubt none can convert all R program to SAS out of the box.

Data never sleeps

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

09-11-2014 12:46 PM

There is no automated way. I doubt if any of our readers would want to spend a bunch of time doing this. You would first have to learn PROC IML and do it. There is another possibility: You can call R from within PROC IML. See the User's Guide, or check this out:

It is easy to embed R within an IML run, get the results and use with SAS.

Solution

09-11-2014
01:15 PM

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

09-11-2014 01:15 PM

Here is a more recent version of the documenation: SAS/IML(R) 13.1 User's Guide

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

09-11-2014 01:14 PM

Did the program editor eat some of your code? It looks like you are missing some closing brackets (the function and the for loop).

It looks like this is a simulation of a regression model. Presumably a mixed model, since it uses the lme4 package. Part of the missing code probably estimate parameters to obtain the sampling distribution.

You need to say how sophisticated your SAS programming skills are, and if you know SAS/IML or only the DATA step. It would also be nice if you tell us what you ultimately hope to accomplish.

There are two chapters about simulating regression models in the book *Simulating Data with SAS*, as well as many tips for efficient simulation There are also examples at this blog: Sampling and Simulation - The DO Loop Here is a blog post that is similar to your example, but it is for a logistic model: Simulate many samples from a logistic regression model - The DO Loop