Example 7.10: Get data from R into SAS

August 13, 2009

(This article was first published on SAS and R, and kindly contributed to R-bloggers)

In our previous entry, we described how to generate a dataset from SAS that could be used for analyses in R. Alternatively, someone primarily using R might want to test the new ”statistical graphics” procedures available starting with SAS 9.2. Here we show how one might create a long data set in R, export it, read it in SAS, and generate a plot similar to that shown in example 7.9.


In R, we use the reshape() function (section 1.5.3) to make the ”long” data set. We make a data frame (section B.4.5) from the data we’ll need in SAS. We check the data, using the order() function (section 1.5.6) to organize the new data frame by subject instead of visit number. Finally, we write out the data set in dBase format (section 1.2.2).

> ds <- read.csv
> attach(ds)
> long <- reshape(ds, idvar="id",
v.names="cesdtv", timevar="visit", direction="long")
> attach(long)
> tosas <- data.frame(id, visit, cesdtv)
> head(tosas[order(id, visit),])

id visit cesdtv
1 1 1 7
471 1 2 NA
941 1 3 8
1411 1 4 5
2 2 1 11
472 2 2 NA

> library(foreign)
> write.dbf(tosas,"c:\book\tosas.dbf")

In SAS, we read in the data from the dBase format file (section 1.1.5), proc sort (section 1.5.6) it in place, and check the data using proc print(section 1.2.4).

proc import datafile="C:booktosas.dbf"
out=fromr dbms=dbf;

proc sort data=fromr; by id visit; run;

proc print data=fromr (obs=5); run;

Obs id visit cesdtv

1 1 1 7
2 1 2 .
3 1 3 8
4 1 4 5
5 2 1 11

Finally, we generate the desired plot with proc sgpanel (section 5.1.11), using the where statement (section A.6.3) to select the first 20 subjects.

proc sgpanel data=fromr;
where id le 20;
panelby id / rows=4 columns=5;
scatter x=visit y=cesdtv;

To leave a comment for the author, please follow the link and comment on their blog: SAS and R.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , , , , ,

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)