Re: [R] How to delete rows

From: Barry Rowlingson <B.Rowlingson_at_lancaster.ac.uk>
Date: Thu 28 Jul 2005 - 03:05:30 EST

Michael Graber wrote:
> Dear R-users,
>
> I am very new to R, so maybe my question is very easy to answer.
> I have the following table:
> TAB1<-data.frame(Name,Number), "Name" and "Number" are all character
> strings,
> it looks like this:
>
> Name Number
>
> ab 2
>

  [etc]

> gh 15
>
> gh 15
>

> for (i in 1:ZeileMax ) {if ( TAB1[[1]] [i] != "NA" )
> {cat(TAB1[[1]][i],file = "Name.txt",fill= TRUE,append = TRUE ,sep =
> "");cat(TAB1[[2]][i], file="Number.txt", fill=TRUE,append=TRUE, sep="")}}
> Name<-readLines("Name.txt")
> Number<-readLines("Number.txt")
> TAB<-data.frame(Name,Number)

  I'm not going to bother working out why that fails!

  The following assumes you want to keep one of any row that has a duplicated Name, in this case the first instance. I think your mail was a bit ambiguous as to whether you wanted to delete all rows with a duplicate Name...

  You can do it in two lines. First select the rows that dont have Name=="NA", and then select the rows that dont have duplicated Name:

  > TAB <- TAB1[TAB1$Name!="NA",]
  > TAB <- TAB[!duplicated(TAB$Name),]

  > TAB
    Name Number

1    ab      2
6    cd      3
7    ef      1
10   gh     15

  Or you can do it in one line:

  > TAB=TAB1[!duplicated(TAB1$Name) & TAB1$Name!="NA",]   > TAB     Name Number

1    ab      2
6    cd      3
7    ef      1
10   gh     15

  Dont think of it as deleting rows, you are selecting the rows you want and creating a new data frame.

  Any simple intro to R (see www.r-project.org for plenty) will have examples on selecting rows and columns.

Baz



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Jul 28 03:23:02 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:34:05 EST