[R] getting data into correct format for summarizing ... reshape, aggregate, or...

stephen sefick ssefick at gmail.com
Mon Sep 15 19:49:05 CEST 2008


thanks all I ended up using:
cast(melt(df1), RiverMile + constituent ~ ., function(x) c(means=
mean(x, na.rm=TRUE),SD=sd1(x, na.rm=TRUE), CV=CV(x, na.rm=TRUE),
MIN=min(x), MAX=max(x), twentyfive=Q25(x), seventyfive=Q75(x)
,n=valid.n(x)))

and this worked quite well for my needs

On Mon, Sep 15, 2008 at 12:48 PM, John Kane <jrkrideau at yahoo.ca> wrote:
> I think your problem is coming from the cbind.  You are forcing the data into a matrix not a data.frame. Neither aggregate or cast will work on that matrix.
>
> Do a str(df1) or class(df1) and you will see what is happening
>
> Try this using the reshape package.  Note the code runs but I have not verified the results. The function approach comes from Hadley's vignette at had.co.nz/reshape/introduction.pdf .
> =====================================================================
>
> df1 <- data.frame(RiverMile, constituent, value)
> cast(df1, RiverMile + constituent ~ ., function(x) c(means= mean(x),SD=sd(x)))
> =====================================================================
>
>
> --- On Mon, 9/15/08, stephen sefick <ssefick at gmail.com> wrote:
>
>> From: stephen sefick <ssefick at gmail.com>
>> Subject: [R] getting data into correct format for summarizing ... reshape, aggregate, or...
>> To: "R-help Mailing List" <r-help at r-project.org>
>> Received: Monday, September 15, 2008, 12:14 PM
>> I would like to reformat this data frame into something that
>> I can
>> produce some descriptive statistics.  I have been playing
>> around with
>> the reshape package and maybe this is not the best way to
>> proceed.  I
>> would like to use RiverMile and constituent as the grouping
>> variables
>> to get the summary statistics:
>>
>> 198a    198b
>> mean   mean
>> sd       sd
>> ...        ...
>>
>> etc. for all of these.
>> I have tried reshape and aggregate and I am sure that I am
>> missing something...
>>
>> below is a naive attempt at making a data frame with the
>> columns in
>> the correct class-  This can be improved also.  There are
>> NA in the
>> real data set, but I didn't know how to randomly
>> intersperse NA in a
>> created matrix.  I hope this makes sense.  If it
>> doesn't I will go
>> back to the drawing board and try and clarify this.
>>
>> value <- rnorm(30)
>> RiverMile <- c(rep(215, length.out=10), rep(202,
>> length.out=10),
>> rep(198, length.out=10))
>> constituent <- c (rep("a", length.out=5),
>> rep("b", length.out=5),
>> rep("a", length.out=5), rep("b",
>> length.out=5), rep("a",
>> length.out=5), rep("b", length.out=5))
>> df <- cbind(as.integer(RiverMile),
>> as.factor(constituent), as.numeric(value))
>> df.1 <- as.data.frame(df)
>> df.1[,"V1"] <-
>> as.integer(df.1[,"V1"])
>> df.1[,"V2"] <-
>> as.factor(df.1[,"V2"])
>> df.1[,"V3"] <-
>> as.numeric(df.1[,"V3"])
>> colnames(df.1) <- c("RiverMile",
>> "constituent", "value")
>>
>>
>> --
>> Stephen Sefick
>> Research Scientist
>> Southeastern Natural Sciences Academy
>>
>> Let's not spend our time and resources thinking about
>> things that are
>> so little or so large that all they really do for us is
>> puff us up and
>> make us feel like gods. We are mammals, and have not
>> exhausted the
>> annoying little problems of being mammals.
>>
>>       -K. Mullis
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained,
>> reproducible code.
>
>
>      __________________________________________________________________
> Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now at
> http://ca.toolbar.yahoo.com.
>



-- 
Stephen Sefick
Research Scientist
Southeastern Natural Sciences Academy

Let's not spend our time and resources thinking about things that are
so little or so large that all they really do for us is puff us up and
make us feel like gods. We are mammals, and have not exhausted the
annoying little problems of being mammals.

	-K. Mullis



More information about the R-help mailing list