RCulloch
2010-May-31 07:28 UTC
[R] store and repeat data based on row names (loop, if statement)
Hello fellow R users, I have an issue that has me a little confused - sorry if the subject makes little sense, I wasn't sure how to refer to this problem. I have a data set I've extracted from ArcInfo (a section is shown below). It is spatial data, showing the distance from one ID to another. I want to get the actual 'TO' ID from the data set (there is no easy way to do this in Arc so I thought I would try in R). The way to do this is to find the dist = 0 row for an ID then that is that IDs unique 'TO' code, so if you look down the second column the highest no. is 4, and A1 = 2, A1.1 = 1, A2 = 4, A2.1 = 3. So I need to get that data and then put it in a new column that will basically read A1.1, A1, A2.1, A2, A1.1, A1, A2.1, A2, A1.1, A1, A2.1, A2, A1.1, A1, A2.1, A2. If anyone has any hints or tips or places to look I would be most grateful! Cheers, Ross TO DIST ID 1 2.63981 'A1' 2 0 'A1' 3 6.95836 'A1' 4 8.63809 'A1' 1 0 'A1.1' 2 2.63981 'A1.1' 3 8.03071 'A1.1' 4 8.90896 'A1.1' 1 8.90896 'A2' 2 8.63809 'A2' 3 2.85602 'A2' 4 0 'A2' 1 8.03071 'A2.1' 2 6.95836 'A2.1' 3 0 'A2.1' 4 2.85602 A2.1' -- View this message in context: http://r.789695.n4.nabble.com/store-and-repeat-data-based-on-row-names-loop-if-statement-tp2236928p2236928.html Sent from the R help mailing list archive at Nabble.com.
jim holtman
2010-May-31 14:37 UTC
[R] store and repeat data based on row names (loop, if statement)
try this:> x <- read.table(textConnection("TO DIST ID+ 1 2.63981 'A1' + 2 0 'A1' + 3 6.95836 'A1' + 4 8.63809 'A1' + 1 0 'A1.1' + 2 2.63981 'A1.1' + 3 8.03071 'A1.1' + 4 8.90896 'A1.1' + 1 8.90896 'A2' + 2 8.63809 'A2' + 3 2.85602 'A2' + 4 0 'A2' + 1 8.03071 'A2.1' + 2 6.95836 'A2.1' + 3 0 'A2.1' + 4 2.85602 'A2.1'"), header=TRUE, as.is=TRUE)> closeAllConnections() > indx <- subset(x, DIST == 0) > x$newCol <- indx$ID[match(x$TO, indx$TO)] > > > xTO DIST ID newCol 1 1 2.63981 A1 A1.1 2 2 0.00000 A1 A1 3 3 6.95836 A1 A2.1 4 4 8.63809 A1 A2 5 1 0.00000 A1.1 A1.1 6 2 2.63981 A1.1 A1 7 3 8.03071 A1.1 A2.1 8 4 8.90896 A1.1 A2 9 1 8.90896 A2 A1.1 10 2 8.63809 A2 A1 11 3 2.85602 A2 A2.1 12 4 0.00000 A2 A2 13 1 8.03071 A2.1 A1.1 14 2 6.95836 A2.1 A1 15 3 0.00000 A2.1 A2.1 16 4 2.85602 A2.1 A2>On Mon, May 31, 2010 at 3:28 AM, RCulloch <ross.culloch at dur.ac.uk> wrote:> > Hello fellow R users, > > I have an issue that has me a little confused - sorry if the subject makes > little sense, I wasn't sure how to refer to this problem. I have a data set > I've extracted from ArcInfo (a section is shown below). It is spatial data, > showing the distance from one ID to another. I want to get the actual 'TO' > ID from the data set (there is no easy way to do this in Arc so I thought I > would try in R). The way to do this is to find the dist = 0 row for an ID > then that is that IDs unique 'TO' code, so if you look down the second > column the highest no. is 4, and A1 = 2, A1.1 = 1, A2 = 4, A2.1 = 3. So I > need to get that data and then put it in a new column that will basically > read A1.1, A1, A2.1, A2, A1.1, A1, A2.1, A2, A1.1, A1, A2.1, A2, A1.1, A1, > A2.1, A2. > > If anyone has any hints or tips or places to look I would be most grateful! > > Cheers, > > Ross > > > TO ? ? ?DIST ? ?ID > 1 ? ? ? 2.63981 'A1' > 2 ? ? ? 0 ? ? ? ? ? ? ? ? ?'A1' > 3 ? ? ? 6.95836 'A1' > 4 ? ? ? 8.63809 'A1' > 1 ? ? ? 0 ? ? ? ? ? ? ? ? ?'A1.1' > 2 ? ? ? 2.63981 'A1.1' > 3 ? ? ? 8.03071 'A1.1' > 4 ? ? ? 8.90896 'A1.1' > 1 ? ? ? 8.90896 'A2' > 2 ? ? ? 8.63809 'A2' > 3 ? ? ? 2.85602 'A2' > 4 ? ? ? 0 ? ? ? ? ? ? ? ? ?'A2' > 1 ? ? ? 8.03071 'A2.1' > 2 ? ? ? 6.95836 'A2.1' > 3 ? ? ? 0 ? ? ? ? ? ? ? ? ?'A2.1' > 4 ? ? ? 2.85602 A2.1' > -- > View this message in context: http://r.789695.n4.nabble.com/store-and-repeat-data-based-on-row-names-loop-if-statement-tp2236928p2236928.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
RCulloch
2010-May-31 17:04 UTC
[R] store and repeat data based on row names (loop, if statement)
Hi Jim, Many thanks - that has worked perfectly, thanks so much for your help! Best wishes, Ross -- View this message in context: http://r.789695.n4.nabble.com/store-and-repeat-data-based-on-row-names-loop-if-statement-tp2236928p2237628.html Sent from the R help mailing list archive at Nabble.com.