Try this:

> x <- read.table(textConnection(
+ "   ID             Date      Segment Slice Tract     Lesion
+ CSPP005 12/4/2007       1     1      LCST         0
+ CSPP005 12/4/2007       1     1      LPC           2
+ CSPP005 12/4/2007       1     1      RPC          3
+ CSPP005 12/4/2007       1     1      RCST        1
+ CSPP005 12/4/2007       1     1      LGM          0
+ CSPP005 12/4/2007       1     1      RGM          0
+ CSPP005 12/4/2007       1     1      Whole        NA
+ CSPP005 12/4/2007       1     2      LCST         0
+ CSPP005 12/4/2007       1     2      LPC           -2
+ CSPP005 12/4/2007       1     2      RPC          3
+ CSPP005 12/4/2007       1     2      RCST        1
+ CSPP005 12/4/2007       1     2      LGM          0
+ CSPP005 12/4/2007       1     2      RGM          0
+ CSPP005 12/4/2007       1     2      Whole        NA
+ CSPP005 12/4/2007       1     3      LCST         0
+ CSPP005 12/4/2007       1     3      LPC           2
+ CSPP005 12/4/2007       1     3      RPC          3
+ CSPP005 12/4/2007       1     3      RCST        1
+ CSPP005 12/4/2007       1     3      LGM          0
+ CSPP005 12/4/2007       1     3      RGM          0
+ CSPP005 12/4/2007       1     3      Whole        NA"), header=TRUE, as.is
=TRUE)
> closeAllConnections()
> # split by ID, Date, Segment & Slice
> x.s <- split(x, list(x$ID, x$Date, x$Segment, x$Slice))
> # now process each group for the conditions
> result <- lapply(x.s, function(.grp){
+     # see if any Lesion has the value 2
+     if (any(na.omit(.grp$Lesion) == 2)) ans <- 2
+     else ans <- 1
+     # assign the ans to "Whole" (I assume each group has one
+     .grp$Lesion[which(.grp$Tract == "Whole")] <- ans
+     .grp  # return changed .grp
+ })
> # put the result back into a single dataframe
> do.call(rbind, result)
                              ID      Date Segment Slice Tract Lesion
CSPP005.12/4/2007.1.1.1  CSPP005 12/4/2007       1     1  LCST      0
CSPP005.12/4/2007.1.1.2  CSPP005 12/4/2007       1     1   LPC      2
CSPP005.12/4/2007.1.1.3  CSPP005 12/4/2007       1     1   RPC      3
CSPP005.12/4/2007.1.1.4  CSPP005 12/4/2007       1     1  RCST      1
CSPP005.12/4/2007.1.1.5  CSPP005 12/4/2007       1     1   LGM      0
CSPP005.12/4/2007.1.1.6  CSPP005 12/4/2007       1     1   RGM      0
CSPP005.12/4/2007.1.1.7  CSPP005 12/4/2007       1     1 Whole      2
CSPP005.12/4/2007.1.2.8  CSPP005 12/4/2007       1     2  LCST      0
CSPP005.12/4/2007.1.2.9  CSPP005 12/4/2007       1     2   LPC     -2
CSPP005.12/4/2007.1.2.10 CSPP005 12/4/2007       1     2   RPC      3
CSPP005.12/4/2007.1.2.11 CSPP005 12/4/2007       1     2  RCST      1
CSPP005.12/4/2007.1.2.12 CSPP005 12/4/2007       1     2   LGM      0
CSPP005.12/4/2007.1.2.13 CSPP005 12/4/2007       1     2   RGM      0
CSPP005.12/4/2007.1.2.14 CSPP005 12/4/2007       1     2 Whole      1
CSPP005.12/4/2007.1.3.15 CSPP005 12/4/2007       1     3  LCST      0
CSPP005.12/4/2007.1.3.16 CSPP005 12/4/2007       1     3   LPC      2
CSPP005.12/4/2007.1.3.17 CSPP005 12/4/2007       1     3   RPC      3
CSPP005.12/4/2007.1.3.18 CSPP005 12/4/2007       1     3  RCST      1
CSPP005.12/4/2007.1.3.19 CSPP005 12/4/2007       1     3   LGM      0
CSPP005.12/4/2007.1.3.20 CSPP005 12/4/2007       1     3   RGM      0
CSPP005.12/4/2007.1.3.21 CSPP005 12/4/2007       1     3 Whole      2
>
>
>
>


On Sat, Mar 13, 2010 at 9:37 PM, Junqian Gordon Xu <xjq...@gmail.com> wrote:

> Hi,
>
> In the example given below, I want to code the "Lesion" in the 7th row
> as 2 because the 2nd row has a Lesion value of 2.
>
>  ID             Date      Segment Slice Tract     Lesion
> 7 CSPP005 12/4/2007       1     1      Whole        2
>
> Otherwise (if there is no lesion value of 2 in row 1-6),  I want to
> code the "Lesion" in the 7th row as 0.
>
>  ID             Date      Segment Slice Tract     Lesion
> 7 CSPP005 12/4/2007       1     1      Whole        0
>
> The whole data frame is just repeated units of the 7 different Tracts
> for different ID->Date->Segment->Slice
>
> Hope it helps
> Gordon
>
> On Sat, Mar 13, 2010 at 8:04 PM, jim holtman <jholt...@gmail.com> wrote:
> > It is not entirely clear what type of transformation you are trying to
> do.
> > Can you provide some sample data and then show what you would expect the
> > output to look like; make sure the data covers all the cases you want to
> > transform.
> >
> > On Sat, Mar 13, 2010 at 8:54 PM, Junqian Gordon Xu <xjq...@gmail.com>
> wrote:
> >>
> >> I have a multilevel dataframe (df):
> >>
> >>   ID             Date      Segment Slice Tract     Lesion
> >> 1 CSPP005 12/4/2007       1     1      LCST         0
> >> 2 CSPP005 12/4/2007       1     1      LPC           2
> >> 3 CSPP005 12/4/2007       1     1      RPC          3
> >> 4 CSPP005 12/4/2007       1     1      RCST        1
> >> 5 CSPP005 12/4/2007       1     1      LGM          0
> >> 6 CSPP005 12/4/2007       1     1      RGM          0
> >> 7 CSPP005 12/4/2007       1     1      Whole        NA
> >>
> >> The five levels are:
> >>
> >> ID->Date->Segment->Slice->Tract
> >>
> >> The observation variable is: Lesion
> >>
> >> What I want to do is (in pseudo code)
> >>
> >> if  (any of the Tract (for a given ID, Date, Segment, and Slice),
> >> which( Lesion == 2) )
> >>    df [ for that particular (ID, Date,Segment, and slice) ,
> >> which(Tract == Whole) ] $Lesion <- 2
> >> else
> >>    df [ for that particular (ID, Date,Segment, and slice) ,
> >> which(Tract == Whole) ] $Lesion <- 0
> >>
> >>
> >>
> >> I started with (don't know if this is the right path),
> >>
> >> Lesion2<-df[which(df$Lesion == 2),]
> >> Where.Lesion2<-unique(Lesion2[,1:4])
> >> Whole<-subset(df, Tract == "Whole")
> >>
> >> But stuck at how to match the ID/Date/Segment/Slice from Where.Lesion2
> to
> >> Whole.
> >>
> >> Regards
> >> Gordon
> >>
> >> ______________________________________________
> >> 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<http://www.r-project.org/posting-guide.html>
> >> and provide commented, minimal, self-contained, reproducible code.
> >
> >
> >
> > --
> > Jim Holtman
> > Cincinnati, OH
> > +1 513 646 9390
> >
> > What is the problem that you are trying to solve?
> >
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?

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

Reply via email to