[R] [Fwd: Re: subsetting]

John Kane jrkrideau at yahoo.ca
Fri Oct 26 18:25:06 CEST 2007


I "think"  I understand what you want. 

This seems to work for the test data you supplied
below.  At least it gives the expected answer.
================================================
df1 <- unique(test.data[,c(1,4)]) 
names(df1) <- c("id.mother", "yy"); df1

df2  <- merge(test.data, df1) ; df2

df3 <- subset(df2, df2$year==df2$year.hatch &
df2$yy==df2$year.hatch)
df3

=================================================



--- henrik.parn at bio.ntnu.no wrote:

> Sorry that I was unclear. For an individual to
> qualify for my analysis I 
> want both of the following two criteria to be
> fulfilled:
> 
> First, I want to select measurement taken at a
> certain age: for the
> focal individual the year of measurement (year)
> should be the same as 
> year.hatch
> Second, I want the focal individual to be born by a
> mother that 
> reproduces for the first time.
> So the /parents /of the focal individual should have
> year == 
> year.1st.reprod.
> 
> The problem for me, I think, is that in my data set
> with several 
> generations, an individual can be both offspring and
> parent to other 
> offspring at the same time (e.g. id=3 in test.data).
> In the 'offspring 
> role', to select a individual from which I want the
> measurements, I 
> would use year==year.hatch. However, for the /same/
> individual in the 
> 'parent role', to pass the 'parent test', it should
> have 
> year==year.1st.reprod.
> 
> In the test data,
> id=3 is an offspring of id=1 in id=1's first
> breeding year (OK!). We 
> then select the measurements from id=1 on the year
> it is born, i.e 1996.
> id=4 is an offspring of id=2 in id=2's first
> breeding year (OK!). We 
> then select the measurements from id=4 on the year
> it is born, i.e 1996.
> id=5 is an offspring of id=3 in id=3's first
> breeding year (OK!). We 
> then select the measurements from id=5 on the year
> it is born, i.e 1997.
> id=6 is an also an offspring of id=3, however /not
> /from id=3's first 
> breeding year (not OK!).
> 
> 
> Cheers,
> 
> Henrik
> 
> 
> John Kane wrote:
> 
>  >I don't understand the criteria that gives you
> just
>  >the three ids.
>  >
>  >As I read the criteria if we put the data into a
>  >data.frame you have
>  >
>  >subset(mydata ,year==year.hatch & year.1st.reprod
> ==
>  >year.hatch+1)
>  >
>  >but this gives more than the three ids. What am I
>  >missing?
>  >
>  >--- henrik.parn at bio.ntnu.no wrote:
>  >
>  >
>  >
>  >>Dear all,
>  >>
>  >>I have received some data on birds that looks sth
>  >>like this:
>  >>
>  >># a unique id for each individual
>  >>id <- c(1,1,1,2,2,2,3,3,3,4,4,5,6)
>  >>
>  >># the year the bird was measured
>  >>year <- c(1995, 1996, 1997, 1995, 1996, 1997,
> 1996,
>  >>1997, 1998, 1996, 1997, 1997, 1998)
>  >>
>  >># the year the bird was hatched
>  >>year.hatch <- c(1995, 1995, 1995, 1995, 1995,
> 1995,
>  >>1996, 1996, 1996, 1996, 1996, 1997, 1998)
>  >>
>  >># the year when the bird reproduced the first
> time
>  >>(for simplicity in the dummy data, all birds
>  >>reproduce the year after it was born)
>  >>year.1st.reprod <- year.hatch + 1
>  >>
>  >># some status (0/1) of an individual
>  >>status <- c(1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0,
> 1)
>  >>
>  >># the id of the mother
>  >>id.mother <- c(NA, NA, NA, NA, NA, NA, 1, 1, 1,
> 2,
>  >>2, 3, 3)
>  >>
>  >># Status of the mother (0/1)
>  >>status.mother <- c(NA, NA, NA, NA, NA, NA, 1, 1,
> 1,
>  >>0, 0, 1, 1)
>  >>
>  >># a measure of individual
>  >>measure <- rnorm(13)
>  >>
>  >>test.data <- data.frame(id, year, year.hatch,
>  >>year.1st.reprod, status, id.mother,
> status.mother,
>  >>measure)
>  >>test.data
>  >>--------------------------------
>  >>
>  >>I want to compare measures of individuals that
> have
>  >>mothers of different status.
>  >>
>  >>But I need help to make the following subset of
>  >>individuals:
>  >>
>  >>I want the measures that are taken on individuals
>  >>the year they are hatched. So for the individuals
> I
>  >>compare, I want year==year.hatch.
>  >>
>  >>...and
>  >>
>  >>I also want that the individuals from which I
> obtain
>  >>measurements are offspring from the first
>  >>reproduction year of their parents.
>  >>So for the individuals I compare, I want their
>  >>/mothers/ to have year==year.1st.reproduction.
>  >>
>  >>Applying my selection criteria on the simple
> dummy
>  >>data above, I would end up with the measures from
>  >>id=3 in 1996, id=4 in 1996 and id=5 in 1997.
>  >>
>  >>
>  >>Can anyone help me how to perform this subsetting
> in
>  >>R?
>  >>
>  >>
[[replacing trailing spam]]
>  >>
>  >>
>  >>Henrik
>  >>
>  >>
> 
> ______________________________________________
> 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