Note that your inner loop > for(i in 1:10 ) { > rowNumber = i + df1[i,j-2] > df1[i,j] = df1[rowNumber, j-4] > } # end i loop
is equivalent to the much quicker i <- 1:10 rowNumbers <- i + df1[i, j-2] df1[i, j] <- df1[rowNumbers, j-4] Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of Ira Sharenow > Sent: Saturday, September 21, 2013 8:31 AM > To: r-help@r-project.org > Subject: [R] Obtaining data from a different row of data frame > > I have a large data frame with 2,000 rows and 600 columns. I can write > loops to solve a smaller problem, but I need a better strategy for this > data frame. > > Below is a simple example with just two stocks. > > In the data frame, each row represents a trading day. The first column > is dates. The next group of columns represents the prices of the stocks > on the specified dates. The next group of columns represents how many > trading days I wish to offset. So if the first trading day is 2006-01-03 > and OF1 == 3, then I need to go to row 1+3 and get the price in column > P1. The result is placed in row 1 of column 6. > > > df1 = data.frame(matrix(rep(NA, 10*7), nrow = 10)) > > Dates =as.Date(c("2006-01-03", "2006-01-04", "2006-01-05", "2006-01-06", > "2006-01-09", "2006-01-10", "2006-01-11", > > "2006-01-12", "2006-01-13", "2006-01-16"), format = "%Y-%m-%d") > > P1 = 10:19 > > P2 = 100:109 > > OF1 = c(3,3,4,5,2,2,2,1,1,0) > > OF2 = c(5,3,4,2,1,2,2,1,1,0) > > df1 = data.frame(Dates = Dates, P1 = P1, P2 = P2, OF1 = OF1, OF2 = OF2) > > df1$newPrice1 = rep(NA, 10) > > df1$newPrice2 = rep(NA, 10) > > for(j in 6:7) { > > for(i in 1:10 ) { > > rowNumber = i + df1[i,j-2] > > #print(rowNumber) > > df1[i,j] = df1[rowNumber, j-4] > > } # end i loop > > } # end j loop > > df1 > > > df1 > > Dates P1P2 OF1 OF2 newPrice1 newPrice2 > > 1 2006-01-03 10 1003513105 > > 22006-01-04 11 1013314104 > > 32006-01-05 12 1024416106 > > 42006-01-06 13 1035218105 > > 52006-01-09 14 1042116105 > > 62006-01-10 15 1052217107 > > 72006-01-11 16 1062218108 > > 82006-01-12 17 1071118108 > > 92006-01-13 18 1081119109 > > 10 2006-01-16 19 1090019109 > > > > [[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. ______________________________________________ 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.