[R] Help with programming a tricky algorithm
arun
smartpink111 at yahoo.com
Sun Oct 21 16:36:33 CEST 2012
HI,
I am not sure whether this is what you want.
Mydata<-read.table(text="
idxy ix iy country col5
1 1 1 c1 x1
2 1 2 c1 x2
3 1 3 c1 x3
4 2 4 c1 x4
5 2 4 c2 x5
6 2 5 c2 x6
7 3 5 c3 x7
8 3 5 c3 x8
9 3 5 c3 x9
",sep="",stringsAsFactors=FALSE,header=TRUE)
country1<-as.numeric(gsub(".*(\\d+)","\\1",Mydata$country))
Mydata1<-data.frame(ix=abs(diff(c(Mydata$ix[2],Mydata$ix))),iy=abs(diff(c(Mydata$iy[2],Mydata$iy))),country=abs(diff(c(country1[2],country1))))
Mydata2<- Mydata[apply(Mydata1,1,function(x) all(!duplicated(x)|!duplicated(x,fromLast=TRUE))),]
Mydata2$border<-1
res<-merge(Mydata,Mydata2,by.x=c("idxy","ix","iy","country","col5"),by.y=c("idxy","ix","iy","country","col5"),all.x=TRUE)
res
# idxy ix iy country col5 border
#1 1 1 1 c1 x1 1
#2 2 1 2 c1 x2 1
#3 3 1 3 c1 x3 1
#4 4 2 4 c1 x4 1
#5 5 2 4 c2 x5 1
#6 6 2 5 c2 x6 1
#7 7 3 5 c3 x7 1
#8 8 3 5 c3 x8 NA
#9 9 3 5 c3 x9 NA
----- Original Message -----
From: Andrew Crane-Droesch <andrewcd at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Saturday, October 20, 2012 3:36 AM
Subject: [R] Help with programming a tricky algorithm
Hi All,
I'm a little stumped by the following problem. I've got a dataset with the following structure:
idxy ix iy country (other variables)
1 1 1 c1 x1
2 1 2 c1 x2
3 1 3 c1 x3
. . . . .
3739 55 67 c7 x3739
3740 55 68 c7 x3740
where ix and iy are interger-valued indices of the actual x and y coordinates for the gridded data
I want to define a "border" variable that equals 1 if the cell north, east, west, or south of it has a different value of the country variable. So, for the row with idxy = 1, border would equal 1 if there is any idxy with country !=c1 and ix = 2 (or zero) or iy = 2 (or zero).
Any thoughts?
Thanks!
Andrew
______________________________________________
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