多年来,这个网站给了我很多帮助,但我似乎无法理解这一部分。我正在研究在阿富汗建立恐怖袭击的模型,并希望创建一个新变量来反映攻击的集群。对于每次攻击,我想计算分为两个范围标准,即距离和时间的攻击次数。
head(timedist_terr_talib, 15)
eventid lat lon event1 Cluster_Num
1 20110104 32.07333 64.83389 2011-01-04 NA
2 20110107 31.00806 66.39806 2011-01-07 NA
3 20110112 34.53306 69.16611 2011-01-12 NA
4 20110112 34.87417 71.15278 2011-01-12 NA
5 20110114 31.65003 65.65002 2011-01-14 1
6 20110115 33.42977 66.21314 2011-01-15 0
7 20110116 35.95000 68.70000 2011-01-16 0
8 20110119 32.68556 68.23778 2011-01-19 0
9 20110119 34.08056 68.51917 2011-01-19 1
10 20110123 34.89000 71.18000 2011-01-23
11 20110128 34.53306 69.16611 2011-01-28
12 20110129 31.61767 65.67594 2011-01-29
13 20110131 35.03924 69.00633 2011-01-31
14 20110201 31.61767 65.67594 2011-02-01
15 20110207 31.48623 64.32139 2011-02-07
我想创建一个新列,其值是过去14天内发生的攻击次数和100次攻击次数。
event1 <- strptime(timedist_terr_talib$eventid,
format="%Y%m%d", tz="UTC")
我发现代码生成了一个矩阵,每个点之间的距离: http://eurekastatistics.com/calculating-a-distance-matrix-for-geographic-points-using-r/
#find dist in meters / 1000 to get km
#dis_talib_mat<-round(GeoDistanceInMetresMatrix(timedist_terr_talib) / 1000)
dis_talib_mat1 <- (GeoDistanceInMetresMatrix(timedist_terr_talib) / 1000)
我有一个矩阵来计算每对之间的时间距离:
timediff_talib1<-t(outer(timedist_terr_talib$event1,
timedist_terr_talib$event1, difftime))
timediff_talib1<-timediff_talib1/(60*60*24)
因此,攻击1:4的示例是NA,因为数据没有完整的14天。当我看到攻击5时,我会看到1:4的攻击,因为它们发生了14天。距离矩阵显示其中1次攻击在100公里范围内。
并手动计算1次攻击不到100公里。
我目前的数据集是2813次攻击,所以运行速度很慢,但是如果我能得到这些15的代码并将其应用到我的设置中,我会很高兴的!