Quantcast

need help reshaping table using aggregate

classic Classic list List threaded Threaded
4 messages Options
Tim
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

need help reshaping table using aggregate

Tim
I am trying to learn how to reshape my data set.  I am new to R, so please bear with me.  Basically, I have the following data set:

site<-c("A","A","B","B")
bug<-c("spider","grasshopper","ladybug","stinkbug")
count<-c(2,4,6,8)
myf <- data.frame(site, bug, count)
myf

  site         bug count
1    A      spider     2
2    A grasshopper     4
3    B     ladybug     6
4    B    stinkbug     8

This means that in site A, I found 2 spiders and 4 grasshopper.  In site B, I found 6 ladybugs and 8 stinkbugs.

I would like to change the df to aggregate the site column and make the bugs columns so it arranged like this:

  site spider grasshopper ladybug stinkbug
1    A      2           4       0        0
2    B      0           0       6        8
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: need help reshaping table using aggregate

Rui Barradas
Hello,

Try


library(reshape2)

mlt <- melt(myf, id=c("site", "bug"), measure="count")
myf2 <- dcast(mm, site ~ bug)
myf2[is.na(myf2)] <- 0
myf2


Hope this helps,

Rui Barradas

Em 20-06-2012 19:58, Tim escreveu:

> I am trying to learn how to reshape my data set.  I am new to R, so please
> bear with me.  Basically, I have the following data set:
>
> site<-c("A","A","B","B")
> bug<-c("spider","grasshopper","ladybug","stinkbug")
> count<-c(2,4,6,8)
> myf <- data.frame(site, bug, count)
> myf
>
>    site         bug count
> 1    A      spider     2
> 2    A grasshopper     4
> 3    B     ladybug     6
> 4    B    stinkbug     8
>
> This means that in site A, I found 2 spiders and 4 grasshopper.  In site B,
> I found 6 ladybugs and 8 stinkbugs.
>
> I would like to change the df to aggregate the site column and make the bugs
> columns so it arranged like this:
>
>    site spider grasshopper ladybug stinkbug
> 1    A      2           4       0        0
> 2    B      0           0       6        8
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/need-help-reshaping-table-using-aggregate-tp4634014.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: need help reshaping table using aggregate

Rui Barradas
Hello, again.

Actually, you don't need to melt the data.frame, you can directly dcast
'myf' using value.var="count".

Rui Barradas

Em 20-06-2012 20:56, Rui Barradas escreveu:

> Hello,
>
> Try
>
>
> library(reshape2)
>
> mlt <- melt(myf, id=c("site", "bug"), measure="count")
> myf2 <- dcast(mm, site ~ bug)
> myf2[is.na(myf2)] <- 0
> myf2
>
>
> Hope this helps,
>
> Rui Barradas
>
> Em 20-06-2012 19:58, Tim escreveu:
>> I am trying to learn how to reshape my data set.  I am new to R, so
>> please
>> bear with me.  Basically, I have the following data set:
>>
>> site<-c("A","A","B","B")
>> bug<-c("spider","grasshopper","ladybug","stinkbug")
>> count<-c(2,4,6,8)
>> myf <- data.frame(site, bug, count)
>> myf
>>
>>    site         bug count
>> 1    A      spider     2
>> 2    A grasshopper     4
>> 3    B     ladybug     6
>> 4    B    stinkbug     8
>>
>> This means that in site A, I found 2 spiders and 4 grasshopper.  In
>> site B,
>> I found 6 ladybugs and 8 stinkbugs.
>>
>> I would like to change the df to aggregate the site column and make
>> the bugs
>> columns so it arranged like this:
>>
>>    site spider grasshopper ladybug stinkbug
>> 1    A      2           4       0        0
>> 2    B      0           0       6        8
>>
>>
>> --
>> View this message in context:
>> http://r.789695.n4.nabble.com/need-help-reshaping-table-using-aggregate-tp4634014.html
>>
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> [hidden email] 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.
>>
>
> ______________________________________________
> [hidden email] 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.

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: need help reshaping table using aggregate

Phil Spector
In reply to this post by Tim
Tim -
   Another approach to your problem is to use xtabs:

> xtabs(count~site+bug,data=myf)
     bug
site grasshopper ladybug spider stinkbug
    A           4       0      2        0
    B           0       6      0        8

  - Phil Spector
  Statistical Computing Facility
  Department of Statistics
  UC Berkeley
  [hidden email]


On Wed, 20 Jun 2012, Tim wrote:

> I am trying to learn how to reshape my data set.  I am new to R, so please
> bear with me.  Basically, I have the following data set:
>
> site<-c("A","A","B","B")
> bug<-c("spider","grasshopper","ladybug","stinkbug")
> count<-c(2,4,6,8)
> myf <- data.frame(site, bug, count)
> myf
>
>  site         bug count
> 1    A      spider     2
> 2    A grasshopper     4
> 3    B     ladybug     6
> 4    B    stinkbug     8
>
> This means that in site A, I found 2 spiders and 4 grasshopper.  In site B,
> I found 6 ladybugs and 8 stinkbugs.
>
> I would like to change the df to aggregate the site column and make the bugs
> columns so it arranged like this:
>
>  site spider grasshopper ladybug stinkbug
> 1    A      2           4       0        0
> 2    B      0           0       6        8
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/need-help-reshaping-table-using-aggregate-tp4634014.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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.
Loading...