[R] group data based on row value

David Carlson dcarlson at tamu.edu
Thu May 23 17:11:20 CEST 2013


The OP indicated that the middle group should be closed on both ends, i.e.
[0.1, 0.6].

> dat2 <- rbind(dat, 0.1, 0.6)
> dat2$group <-  factor(ifelse(dat2$Var<.1, "A", ifelse(dat2$Var>.6, "C",
"B")))
> dat2
  Var group
1 0.0     A
2 0.2     B
3 0.5     B
4 1.0     C
5 4.0     C
6 6.0     C
7 0.1     B
8 0.6     B

Does it but would be clumsy for more than three groups. Depending on the
precision of the numbers something like

> dat2$group <- cut( dat2$Var, breaks=c(-Inf, 0.1-.0001, 0.6+.0001, Inf),
labels=LETTERS[1:3])
> dat2
  Var group
1 0.0     A
2 0.2     B
3 0.5     B
4 1.0     C
5 4.0     C
6 6.0     C
7 0.1     B
8 0.6     B

would also work.

-------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77840-4352

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Jeff Newmiller
Sent: Wednesday, May 22, 2013 5:27 PM
To: Ye Lin; R help
Subject: Re: [R] group data based on row value

dat$group <- cut( dat$Var, breaks=c(-Inf,0.1, 0.6,Inf))
levels(dat$group) <- LETTERS[1:3]

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

Ye Lin <yelin at lbl.gov> wrote:

>hey, I want to divide my data into three groups based on the value in
>one
>column with group name.
>
>dat:
>
>Var
>0
>0.2
>0.5
>1
>4
>6
>
>I tried:
>
>dat <- cbind(dat, group=cut(dat$Var, breaks=c(0.1,0.6)))
>
>But it doesnt work, I want to group those <0.1 as group A, 0.1-0.6 as
>group
>B, >0.6 as group C
>
>Thanks for your help!
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>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.

______________________________________________
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.



More information about the R-help mailing list