У меня есть искусственный набор данных, который я создал:
x<-rnorm(100,10,10)
y<-rnorm(100,20,10)
Location<-c((rep("AB", 40)),(rep("TA", 30)),(rep("OP", 30)))
Year<-c((rep("1999", 10)),(rep("2000", 9)),(rep("2001", 12)),(rep("2002", 9)),(rep("1999", 7)),(rep("2000", 6)),(rep("2001", 6)),(rep("2002", 11)),(rep("1999", 12)),(rep("2000", 8)),(rep("2001", 5)),(rep("2002", 5)))
Data<-cbind(x,y,Location,Year)
> head(Data)
x y Location Year
[1,] "1.8938661556415" "19.851256070398" "AB" "1999"
[2,] "21.0735971323312" "17.4993965352294" "AB" "1999"
[3,] "30.8347289164302" "7.63333686308105" "AB" "1999"
[4,] "8.913993138201" "14.7085296541221" "AB" "1999"
[5,] "20.8309225677419" "12.0888505284667" "AB" "1999"
[6,] "25.3978549194374" "20.47154776064" "AB" "1999"
Я хотел бы взять arc2tan для каждого x и y, например:
Theta<-atan2(y[i+1]-y[i],x[i+1]-x[i])
но я хочу делать это только для каждого года в пределах года, то есть я не хочу находить тэту между 1999 и 2000, или между 2001 и 2002 и т. д. Только между точками x и y одного года в одном месте.
Изначально я написал цикл, который выполнял описанное выше (чего я не хочу делать), и мне было интересно, знает ли кто-нибудь, как его изменить, чтобы цикл останавливался и сбрасывался на каждый год. Исходный цикл представлен ниже:
for (i in 1:length(x)-1){
Theta[i]<-atan2(y[i+1]-y[i],x[i+1]-x[i])
}
Есть помощники?