[R] SAS to R migration questions
Spencer Graves
spencer.graves at pdf.com
Sun Sep 12 21:55:59 CEST 2004
I copied your data into Excel and saved it as *.txt. From within
R, the following commands produced for me the result cited in your email
below:
salesData <- read.table("R-qn.txt", header=TRUE,
sep="\t", as.is=TRUE)
sapply(salesData, class)# check class of columns of salesData
reversal <- regexpr("\\(", salesData$salepx)
rev <- which(reversal>0)
salesData[-c(rev, rev-1),]
If "R-qn.txt" contained gigabytes, R might die in "read.table".
For that, you will need to process the data base in smaller pieces. The
"R Data Import/Export" manual [available, e.g., via help.start() from
within R] discusses various ways of interacting direction with
relational databases, etc.
hope this helps. spencer graves
Matthew Wilson wrote:
>Hi,
>
>
>I'd like to get away from SAS, but I don't really know R well enough at
>this point to know if it would be good for this project. I tried to
>describe the essence of the project below without getting bogged down in
>details.
>
>It starts when I receive a data flat file. There's lots of columns, but
>the relevant ones are:
>
> custid (customer ID number)
> saledt (date of sale)
> salepx (sale price)
>
>
>Step 1:
>
>I read in this data into a SAS dataset. Some of these flat files hold
>several gigabytes of data. SAS allows indexes to be created on columns
>which really speeds up queries.
>
>I read the R import/export doc and it suggested using databases for
>really big datasets. I figured I'd probably use perl or python to read
>the file and convert it to either an R .tab file or to load the data
>into a SQL database for the big files (Postgres or MySQL, since I'm
>trying to go 100% open source with this).
>
>
>
>Step 2:
>
>In the data, I'll usually find one row per sale, but occasionally, a
>sale will be entered incorrectly at first, then later reversed, then a
>third line will show the correct sale data:
>
> custid saledt salepx
> 111 8/1/2004 $75
> 111 9/1/2004 $50
> 112 10/1/2004 $30
> 112 10/1/2004 ($30)
> 112 10/1/2004 $20
>
>The fourth line reverses the third line by showing a negative charge for
>the same customer ID and sale date, and the last line is the correct
>line. I want to compress all those adjustments and reversals lines out
>of the data, so the outgoing data would look like this:
>
> custid saledt salepx
> 111 8/1/2004 $75
> 111 9/1/2004 $50
> 112 10/1/2004 $20
>
>In SAS, I use a proc summary step in SAS to accomplish this:
>
> proc summary data=d1;
> class custid saledt;
> var salepx;
> output out=d2 sum=;
> run;
>
>This is where I need help: how to do this step in R?
>
>
>Step 3:
>
>I print a list of number of sales per customer ID, ranking the customer
>IDs from most to least. I use a SAS proc freq step for this:
>
> proc freq data=d2 order=freq;
> tables custid;
> run;
>
>and the output would look like this:
>
> custid freq
> 111 2
> 112 1
>
>
>Again, I have no idea how to do step 3 in R.
>
>
>Thanks in advance! All help is welcome. Is this kind of work what R is
>good at?
>
>
>
>
--
Spencer Graves, PhD, Senior Development Engineer
O: (408)938-4420; mobile: (408)655-4567
More information about the R-help
mailing list