Re: [R] Binning the data based on a value

2011-12-05 Thread R. Michael Weylandt
Add the drop = TRUE command to split

?split
split(a, cut(a$spending, breaks = (0:5)*100), drop = TRUE)

Michael

On Mon, Dec 5, 2011 at 4:06 PM, Diviya Smith  wrote:
> Thank you very much Michael. This is very helpful. However, if there is any
> way to exclude zero length bins. Lets imagine that the matrix was as follows
> -
>
> a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
>  age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 400, 450, 500))
>
> bins <- split(a, cut(a$spending, breaks = (0:5)*100)
>
> then bins[3] =
> $`(200,300]`
> [1] patient  charges  age      spending
> <0 rows> (or 0-length row.names)
>
> Is there a way to exclude this?
>
> Priya
>
> On Mon, Dec 5, 2011 at 3:43 PM, R. Michael Weylandt
>  wrote:
>>
>> Just a clarification: I can't get round to work as I first expected so
>> if you want to do bins by 100's you'd probably want:
>>
>> split(a, cut(a$spending, breaks = (0:5)*100))
>>
>> Michael
>>
>> On Mon, Dec 5, 2011 at 3:41 PM, R. Michael Weylandt
>>  wrote:
>> > I'd so something like
>> >
>> > split(a, a$spending)
>> >
>> > and you can include a round(a$spending, -2) or something similar if
>> > you want to group by the 100's.
>> >
>> > Michael
>> >
>> > On Mon, Dec 5, 2011 at 3:37 PM, Diviya Smith 
>> > wrote:
>> >> Hello there,
>> >>
>> >> I have a matrix with some data and I want to split this matrix based on
>> >> the
>> >> values in one column. Is there a quick way of doing this? I have looked
>> >> at
>> >> cut but I am not sure how to exactly use it?
>> >> for example:
>> >>
>> >> I would like to split the matrix "a" based on the spending such that
>> >> the
>> >> data is binned groups [0..99],[100..199]...and so on.
>> >>
>> >> a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
>> >>  age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 250, 400, 450))
>> >>
>> >> Expected  output -
>> >> bin[1] <- c(10, 60)
>> >> bin[2] <- c(110, 200, 250)
>> >> bin[3] <- c(400, 450)
>> >>
>> >> NOTE that the number of data points in each bin is not the same and the
>> >> empty bins are removed (since there are no points between [199..299],
>> >> bin[3] starts at 400.
>> >>
>> >> Any help would be most appreciated. Thank you in advance.
>> >>
>> >> Diviya
>> >>
>> >>        [[alternative HTML version deleted]]
>> >>
>> >> __
>> >> R-help@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.
>
>

__
R-help@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.


Re: [R] Binning the data based on a value

2011-12-05 Thread Diviya Smith
Thank you very much Michael. This is very helpful. However, if there is any
way to exclude zero length bins. Lets imagine that the matrix was as
follows -

a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
 age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 400, 450, 500))

bins <- split(a, cut(a$spending, breaks = (0:5)*100)

then bins[3] =
$`(200,300]`
[1] patient  charges  age  spending
<0 rows> (or 0-length row.names)

Is there a way to exclude this?

Priya

On Mon, Dec 5, 2011 at 3:43 PM, R. Michael Weylandt <
michael.weyla...@gmail.com> wrote:

> Just a clarification: I can't get round to work as I first expected so
> if you want to do bins by 100's you'd probably want:
>
> split(a, cut(a$spending, breaks = (0:5)*100))
>
> Michael
>
> On Mon, Dec 5, 2011 at 3:41 PM, R. Michael Weylandt
>  wrote:
> > I'd so something like
> >
> > split(a, a$spending)
> >
> > and you can include a round(a$spending, -2) or something similar if
> > you want to group by the 100's.
> >
> > Michael
> >
> > On Mon, Dec 5, 2011 at 3:37 PM, Diviya Smith 
> wrote:
> >> Hello there,
> >>
> >> I have a matrix with some data and I want to split this matrix based on
> the
> >> values in one column. Is there a quick way of doing this? I have looked
> at
> >> cut but I am not sure how to exactly use it?
> >> for example:
> >>
> >> I would like to split the matrix "a" based on the spending such that the
> >> data is binned groups [0..99],[100..199]...and so on.
> >>
> >> a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
> >>  age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 250, 400, 450))
> >>
> >> Expected  output -
> >> bin[1] <- c(10, 60)
> >> bin[2] <- c(110, 200, 250)
> >> bin[3] <- c(400, 450)
> >>
> >> NOTE that the number of data points in each bin is not the same and the
> >> empty bins are removed (since there are no points between [199..299],
> >> bin[3] starts at 400.
> >>
> >> Any help would be most appreciated. Thank you in advance.
> >>
> >> Diviya
> >>
> >>[[alternative HTML version deleted]]
> >>
> >> __
> >> R-help@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.
>

[[alternative HTML version deleted]]

__
R-help@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.


Re: [R] Binning the data based on a value

2011-12-05 Thread R. Michael Weylandt
Just a clarification: I can't get round to work as I first expected so
if you want to do bins by 100's you'd probably want:

split(a, cut(a$spending, breaks = (0:5)*100))

Michael

On Mon, Dec 5, 2011 at 3:41 PM, R. Michael Weylandt
 wrote:
> I'd so something like
>
> split(a, a$spending)
>
> and you can include a round(a$spending, -2) or something similar if
> you want to group by the 100's.
>
> Michael
>
> On Mon, Dec 5, 2011 at 3:37 PM, Diviya Smith  wrote:
>> Hello there,
>>
>> I have a matrix with some data and I want to split this matrix based on the
>> values in one column. Is there a quick way of doing this? I have looked at
>> cut but I am not sure how to exactly use it?
>> for example:
>>
>> I would like to split the matrix "a" based on the spending such that the
>> data is binned groups [0..99],[100..199]...and so on.
>>
>> a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
>>  age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 250, 400, 450))
>>
>> Expected  output -
>> bin[1] <- c(10, 60)
>> bin[2] <- c(110, 200, 250)
>> bin[3] <- c(400, 450)
>>
>> NOTE that the number of data points in each bin is not the same and the
>> empty bins are removed (since there are no points between [199..299],
>> bin[3] starts at 400.
>>
>> Any help would be most appreciated. Thank you in advance.
>>
>> Diviya
>>
>>        [[alternative HTML version deleted]]
>>
>> __
>> R-help@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.

__
R-help@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.


Re: [R] Binning the data based on a value

2011-12-05 Thread R. Michael Weylandt
I'd so something like

split(a, a$spending)

and you can include a round(a$spending, -2) or something similar if
you want to group by the 100's.

Michael

On Mon, Dec 5, 2011 at 3:37 PM, Diviya Smith  wrote:
> Hello there,
>
> I have a matrix with some data and I want to split this matrix based on the
> values in one column. Is there a quick way of doing this? I have looked at
> cut but I am not sure how to exactly use it?
> for example:
>
> I would like to split the matrix "a" based on the spending such that the
> data is binned groups [0..99],[100..199]...and so on.
>
> a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
>  age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 250, 400, 450))
>
> Expected  output -
> bin[1] <- c(10, 60)
> bin[2] <- c(110, 200, 250)
> bin[3] <- c(400, 450)
>
> NOTE that the number of data points in each bin is not the same and the
> empty bins are removed (since there are no points between [199..299],
> bin[3] starts at 400.
>
> Any help would be most appreciated. Thank you in advance.
>
> Diviya
>
>        [[alternative HTML version deleted]]
>
> __
> R-help@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.

__
R-help@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.


[R] Binning the data based on a value

2011-12-05 Thread Diviya Smith
Hello there,

I have a matrix with some data and I want to split this matrix based on the
values in one column. Is there a quick way of doing this? I have looked at
cut but I am not sure how to exactly use it?
for example:

I would like to split the matrix "a" based on the spending such that the
data is binned groups [0..99],[100..199]...and so on.

a <- data.frame(patient=1:7, charges=c(100,500,200,90,400,500,600),
 age=c(0,3,5,7,10,16,19),  spending=c(10, 60, 110, 200, 250, 400, 450))

Expected  output -
bin[1] <- c(10, 60)
bin[2] <- c(110, 200, 250)
bin[3] <- c(400, 450)

NOTE that the number of data points in each bin is not the same and the
empty bins are removed (since there are no points between [199..299],
bin[3] starts at 400.

Any help would be most appreciated. Thank you in advance.

Diviya

[[alternative HTML version deleted]]

__
R-help@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.