我有一个我创建的人工数据集:
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"
我想取每个 x 和 y 的 arc2tan,例如:
Theta<-atan2(y[i+1]-y[i],x[i+1]-x[i])
但我只想在年份位置内的每一年执行此操作,这意味着我不想在 1999 年至 2000 年之间或 2001 年至 2002 年等之间找到 theta。仅在同一位置的同一年的 x 和 y 点之间。
我最初编写了一个执行上述操作的循环(我不想这样做),我想知道是否有人知道如何更改它,以便循环每年都会停止并自行重置。原始循环提供如下:
for (i in 1:length(x)-1){
Theta[i]<-atan2(y[i+1]-y[i],x[i+1]-x[i])
}
有帮手吗?