Keith Larson wrote on 12/27/2011 03:05:48 PM: > Dear all, > > I would like to conduct a Pearson's correlation using cor.test > separately for each individual in my data set. Each individual has > nine observations of the measurement variable 'Delta13C'. I can figure > our how to do it manually one 'Individual_ID' at a time, but I cannot > figure out how to automate the process (a loop I am guessing). In > addition, I would like to generate a new data frame that has the each > individual's 'Individual_ID', the pearson correlation 'estimate', and > the 'p.valve'. > > The output table would look something like: > > Individual_ID, estimate, p.value > WW_08A_02, -0.7670675, 0.01586 > WW_08A_03, -0.02320767, 0.9527 > > Code with sample data: > > ## Create sample dataset > WW_Wing_SI <- > structure(list(Individual_ID = c("WW_08A_02", "WW_08A_02", "WW_08A_02", > "WW_08A_02", "WW_08A_02", "WW_08A_02", "WW_08A_02", "WW_08A_02", > "WW_08A_02", "WW_08A_03", "WW_08A_03", "WW_08A_03", "WW_08A_03", > "WW_08A_03", "WW_08A_03", "WW_08A_03", "WW_08A_03", "WW_08A_03" > ), FeatherPosition = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, > 5, 6, 7, 8, 9), Delta13C = c(-18.67, -19.16, -20.38, -20.96, > -21.61, -21.65, -21.31, -20.8, -21.28, -20.06, -20.3, -21.21, > -22.9, -22.87, -21.13, -20.68, -20.58, -20.69)), .Names = c("Individual_ID", > "FeatherPosition", "Delta13C"), row.names = c(NA, 18L), class = "data.frame") > > > ## Create vector with unique individual IDs > WW_Wing_Individuals <- unique(WW_Wing_SI$Individual_ID) > > ## Create temp dataset with for the first individual > temp <- WW_Wing_SI_Spring[ which(WW_Wing_SI_Spring$Individual_ID == > WW_Wing_Individuals[1]), ] > > ## Create temp2 dateset with results of pearsons product-moment > correlation (for the first individual) > temp2 <- cor.test(temp$Delta13C, temp$FeatherPosition, method="pearson") > > Many Cheers, > Keith > > ******************************************************************************************* > Keith Larson, PhD Student > Evolutionary Ecology, Lund University > Sölvegatan 37 > 223 62 Lund Sweden > Phone: +46 (0)46 2229014 Mobile: +46 (0)73 0465016 Fax: +46 (0)46 2224716 > Skype: sternacaspia FB: keith.w.lar...@gmail.com
# split your data frame according the the individual IDs wing.list <- split(WW_Wing_SI, WW_Wing_SI$Individual_ID) # then apply cor.test() with extract to each element of the list t(sapply(wing.list, function(temp) cor.test(temp$Delta13C, temp$FeatherPosition, method="pearson")[c("estimate", "p.value")])) Jean [[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.