[R] [FORGED] Re: remove

Val valkremk at gmail.com
Sun Feb 12 19:51:59 CET 2017


Thank you Rainer,

The question was :-
1. Identify those first names with different last names or more than
one last names.
2. Once identified (like Alex)  then exclude them.  This is because
not reliable record.

On Sun, Feb 12, 2017 at 11:17 AM, Rainer Schuermann
<Rainer.Schuermann at gmx.net> wrote:
> I may not be understanding the question well enough but for me
>
> df[ df[ , "first"]  != "Alex", ]
>
> seems to do the job:
>
>   first week last
>
> Rainer
>
>
>
>
> On Sonntag, 12. Februar 2017 19:04:19 CET Rolf Turner wrote:
>>
>> On 12/02/17 18:36, Bert Gunter wrote:
>> > Basic stuff!
>> >
>> > Either subscripting or ?subset.
>> >
>> > There are many good R tutorials on the web. You should spend some
>> > (more?) time with some.
>>
>> Uh, Bert, perhaps I'm being obtuse (a common occurrence) but it doesn't
>> seem basic to me.  The only way that I can see how to go at it is via
>> a for loop:
>>
>> rdln <- function(X) {
>> # Remove discordant last names.
>>      ok <- logical(nrow(X))
>>      for(nm in unique(X$first)) {
>>          xxx <- unique(X$last[X$first==nm])
>>          if(length(xxx)==1) ok[X$first==nm] <- TRUE
>>      }
>>      Y <- X[ok,]
>>      Y <- Y[order(Y$first),]
>>      rownames(Y) <- 1:nrow(Y)
>>      Y
>> }
>>
>> Calling the toy data frame "melvin" rather than "df" (since "df" is the
>> name of the built in F density function, it is bad form to use it as the
>> name of another object) I get:
>>
>>  > rdln(melvin)
>>    first week last
>> 1   Bob    1 John
>> 2   Bob    2 John
>> 3   Bob    3 John
>> 4  Cory    1 Jack
>> 5  Cory    2 Jack
>>
>> which is the desired output.  If there is a "basic stuff" way to do this
>> I'd like to see it.  Perhaps I will then be toadally embarrassed, but
>> they say that this is good for one.
>>
>> cheers,
>>
>> Rolf
>>
>> > On Sat, Feb 11, 2017 at 9:02 PM, Val <valkremk at gmail.com> wrote:
>> >> Hi all,
>> >> I have a big data set and want to  remove rows conditionally.
>> >> In my data file  each person were recorded  for several weeks. Somehow
>> >> during the recording periods, their last name was misreported.   For
>> >> each person,   the last name should be the same. Otherwise remove from
>> >> the data. Example, in the following data set, Alex was found to have
>> >> two last names .
>> >>
>> >> Alex   West
>> >> Alex   Joseph
>> >>
>> >> Alex should be removed  from the data.  if this happens then I want
>> >> remove  all rows with Alex. Here is my data set
>> >>
>> >> df <- read.table(header=TRUE, text='first  week last
>> >> Alex    1  West
>> >> Bob     1  John
>> >> Cory    1  Jack
>> >> Cory    2  Jack
>> >> Bob     2  John
>> >> Bob     3  John
>> >> Alex    2  Joseph
>> >> Alex    3  West
>> >> Alex    4  West ')
>> >>
>> >> Desired output
>> >>
>> >>       first  week last
>> >> 1     Bob     1   John
>> >> 2     Bob     2   John
>> >> 3     Bob     3   John
>> >> 4     Cory     1   Jack
>> >> 5     Cory     2   Jack
>>
>> ______________________________________________
>> 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]]
>
> ______________________________________________
> 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.



More information about the R-help mailing list