[R] Remove

William Dunlap wdunlap at tibco.com
Sat Dec 9 20:21:20 CET 2017


You could make numeric vectors, named by the group identifier, of the
contraints
and subscript it by group name:

> DM <- read.table( text='GR x y
+ A 25 125
+ A 23 135
+ A 14 145
+ A 35 230
+ B 45 321
+ B 47 512
+ B 53 123
+ B 55 451
+ C 61 521
+ C 68 235
+ C 85 258
+ C 80 654',header = TRUE, stringsAsFactors = FALSE)
>
> GRmin <- c(A=15, B=40, C=60)
> GRmax <- c(A=30, B=50, C=75)
> subset(DM, x>=GRmin[GR] & x <=GRmax[GR])
   GR  x   y
1   A 25 125
2   A 23 135
5   B 45 321
6   B 47 512
9   C 61 521
10  C 68 235

Or, if you want to completely avoid non-standard evaluation:
> DM[ DM$x >= GRmin[DM$GR] & DM$x <= GRmax[DM$GR], ]
   GR  x   y
1   A 25 125
2   A 23 135
5   B 45 321
6   B 47 512
9   C 61 521
10  C 68 235




Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Sat, Dec 9, 2017 at 9:38 AM, David Winsemius <dwinsemius at comcast.net>
wrote:

>
> > On Dec 8, 2017, at 6:16 PM, David Winsemius <dwinsemius at comcast.net>
> wrote:
> >
> >
> >> On Dec 8, 2017, at 4:48 PM, Ashta <sewashm at gmail.com> wrote:
> >>
> >> Hi David, Ista and all,
> >>
> >> I  have one related question  Within one group I want to keep records
> >> conditionally.
> >> example within
> >> group A I want keep rows that have  " x" values  ranged  between 15 and
> 30.
> >> group B I want keep rows that have  " x" values  ranged  between  40
> and 50.
> >> group C I want keep rows that have  " x" values  ranged  between  60
> and 75.
> >
> > When you have a problem where there are multiple "parallel: parameters,
> the function to "reach for" is `mapply`.
> >
> >    mapply( your_selection_func, group_vec, min_vec, max_vec)
> >
> > ... and this will probably return the values as a list (of dataframes if
> you build the function correctly,  so you may may need to then do:
> >
> >    do.call(rbind, ...)
>
>  do.call( rbind,
>     mapply( function(dat, grp, minx, maxx) {dat[ dat$GR==grp & dat$x >=
> minx & dat$x <= maxx, ]},
>             grp=LETTERS[1:3], minx=c(15,40,60), maxx=c(30,50,75) ,
>             MoreArgs=list(dat=DM),
>             IMPLIFY=FALSE))
>      GR  x   y
> A.1   A 25 125
> A.2   A 23 135
> B.5   B 45 321
> B.6   B 47 512
> C.9   C 61 521
> C.10  C 68 235
>
> >
> > --
> > David.
> >>
> >>
> >> DM <- read.table( text='GR x y
> >> A 25 125
> >> A 23 135
> >> A 14 145
> >> A 35 230
> >> B 45 321
> >> B 47 512
> >> B 53 123
> >> B 55 451
> >> C 61 521
> >> C 68 235
> >> C 85 258
> >> C 80 654',header = TRUE, stringsAsFactors = FALSE)
> >>
> >>
> >> The end result will be
> >> A 25 125
> >> A 23 135
> >> B 45 321
> >> B 47 512
> >> C 61 521
> >> C 68 235
> >>
> >> Thank you
> >>
> >> On Wed, Dec 6, 2017 at 10:34 PM, David Winsemius <
> dwinsemius at comcast.net> wrote:
> >>>
> >>>> On Dec 6, 2017, at 4:27 PM, Ashta <sewashm at gmail.com> wrote:
> >>>>
> >>>> Thank you Ista! Worked fine.
> >>>
> >>> Here's another (possibly more direct in its logic?):
> >>>
> >>> DM[ !ave(DM$x, DM$GR, FUN= function(x) {!length(unique(x))==1}), ]
> >>> GR  x   y
> >>> 5  B 25 321
> >>> 6  B 25 512
> >>> 7  B 25 123
> >>> 8  B 25 451
> >>>
> >>> --
> >>> David
> >>>
> >>>> On Wed, Dec 6, 2017 at 5:59 PM, Ista Zahn <istazahn at gmail.com> wrote:
> >>>>> Hi Ashta,
> >>>>>
> >>>>> There are many ways to do it. Here is one:
> >>>>>
> >>>>> vars <- sapply(split(DM$x, DM$GR), var)
> >>>>> DM[DM$GR %in% names(vars[vars > 0]), ]
> >>>>>
> >>>>> Best
> >>>>> Ista
> >>>>>
> >>>>> On Wed, Dec 6, 2017 at 6:58 PM, Ashta <sewashm at gmail.com> wrote:
> >>>>>> Thank you Jeff,
> >>>>>>
> >>>>>> subset( DM, "B" != x ), this works if I know the group only.
> >>>>>> But if I don't know that group in this case "B", how do I identify
> >>>>>> group(s) that  all elements of x have the same value?
> >>>>>>
> >>>>>> On Wed, Dec 6, 2017 at 5:48 PM, Jeff Newmiller <
> jdnewmil at dcn.davis.ca.us> wrote:
> >>>>>>> subset( DM, "B" != x )
> >>>>>>>
> >>>>>>> This is covered in the Introduction to R document that comes with
> R.
> >>>>>>> --
> >>>>>>> Sent from my phone. Please excuse my brevity.
> >>>>>>>
> >>>>>>> On December 6, 2017 3:21:12 PM PST, David Winsemius <
> dwinsemius at comcast.net> wrote:
> >>>>>>>>
> >>>>>>>>> On Dec 6, 2017, at 3:15 PM, Ashta <sewashm at gmail.com> wrote:
> >>>>>>>>>
> >>>>>>>>> Hi all,
> >>>>>>>>> In a data set I have group(GR) and two variables   x and y. I
> want to
> >>>>>>>>> remove a  group that have  the same record for the x variable in
> each
> >>>>>>>>> row.
> >>>>>>>>>
> >>>>>>>>> DM <- read.table( text='GR x y
> >>>>>>>>> A 25 125
> >>>>>>>>> A 23 135
> >>>>>>>>> A 14 145
> >>>>>>>>> A 12 230
> >>>>>>>>> B 25 321
> >>>>>>>>> B 25 512
> >>>>>>>>> B 25 123
> >>>>>>>>> B 25 451
> >>>>>>>>> C 11 521
> >>>>>>>>> C 14 235
> >>>>>>>>> C 15 258
> >>>>>>>>> C 10 654',header = TRUE, stringsAsFactors = FALSE)
> >>>>>>>>>
> >>>>>>>>> In this example the output should contain group A and C  as
> group B
> >>>>>>>>> has   the same record  for the variable x .
> >>>>>>>>>
> >>>>>>>>> The result will be
> >>>>>>>>> A 25 125
> >>>>>>>>> A 23 135
> >>>>>>>>> A 14 145
> >>>>>>>>> A 12 230
> >>>>>>>>> C 11 521
> >>>>>>>>> C 14 235
> >>>>>>>>> C 15 258
> >>>>>>>>> C 10 654
> >>>>>>>>
> >>>>>>>> Try:
> >>>>>>>>
> >>>>>>>> DM[ !duplicated(DM$x) , ]
> >>>>>>>>>
> >>>>>>>>> How do I do it R?
> >>>>>>>>> Thank you.
> >>>>>>>>>
> >>>>>>>>> ______________________________________________
> >>>>>>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
> see
> >>>>>>>>> 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.
> >>>>>>>>
> >>>>>>>> David Winsemius
> >>>>>>>> Alameda, CA, USA
> >>>>>>>>
> >>>>>>>> 'Any technology distinguishable from magic is insufficiently
> advanced.'
> >>>>>>>> -Gehm's Corollary to Clarke's Third Law
> >>>>>>>>
> >>>>>>>> ______________________________________________
> >>>>>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >>>>>>>> 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 -- To UNSUBSCRIBE and more, see
> >>>>>> 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 -- To UNSUBSCRIBE and more, see
> >>>> 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.
> >>>
> >>> David Winsemius
> >>> Alameda, CA, USA
> >>>
> >>> 'Any technology distinguishable from magic is insufficiently
> advanced.'   -Gehm's Corollary to Clarke's Third Law
> >>>
> >>>
> >>>
> >>>
> >>>
> >
> > David Winsemius
> > Alameda, CA, USA
> >
> > 'Any technology distinguishable from magic is insufficiently advanced.'
>  -Gehm's Corollary to Clarke's Third Law
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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.
>
> David Winsemius
> Alameda, CA, USA
>
> 'Any technology distinguishable from magic is insufficiently advanced.'
>  -Gehm's Corollary to Clarke's Third Law
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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]]



More information about the R-help mailing list