ข้อมูลที่ดาวน์โหลดมีข้อผิดพลาดเกี่ยวกับตำแหน่งที่ตรงไปตรงมาดังนั้นสิ่งแรกที่ต้องทำคือ จำกัด พิกัดไว้ที่ค่าที่เหมาะสม:
data.df <- read.csv("f:/temp/All_Africa_1997-2011.csv", header=TRUE, sep=",",row.names=NULL)
data.df <- subset(data.df, subset=(LONGITUDE >= -180 & LATITUDE >= -90))
การคำนวณพิกัดและตัวระบุเซลล์กริดเป็นเพียงเรื่องของการตัดทอนทศนิยมจากค่าละติจูดและลองจิจูด (โดยทั่วไปสำหรับ rasters ตามอำเภอใจอันดับแรกและปรับให้เป็นหน่วยเซลลูไลซ์ตัดส่วนทศนิยมแล้ว rescale และ recenter กลับไปที่ตำแหน่งเดิมดังที่แสดงในรหัสji
ด้านล่าง) เราสามารถรวมพิกัดเหล่านี้เป็นตัวระบุเฉพาะ แนบไปกับ input dataframe และเขียนเพิ่ม dataframe ออกเป็นไฟล์ CSV จะมีหนึ่งระเบียนต่อจุด:
ji <- function(xy, origin=c(0,0), cellsize=c(1,1)) {
t(apply(xy, 1, function(z) cellsize/2+origin+cellsize*(floor((z - origin)/cellsize))))
}
JI <- ji(cbind(data.df$LONGITUDE, data.df$LATITUDE))
data.df$X <- JI[, 1]
data.df$Y <- JI[, 2]
data.df$Cell <- paste(data.df$X, data.df$Y)
คุณอาจต้องการให้เอาต์พุตที่สรุปเหตุการณ์ภายในแต่ละกริดเซลล์ เพื่อแสดงสิ่งนี้ลองคำนวณจำนวนต่อเซลล์และส่งออกหนึ่งระเบียนต่อเซลล์:
counts <- by(data.df, data.df$Cell, function(d) c(d$X[1], d$Y[1], nrow(d)))
counts.m <- matrix(unlist(counts), nrow=3)
rownames(counts.m) <- c("X", "Y", "Count")
write.csv(as.data.frame(t(counts.m)), "f:/temp/grid.csv")
สำหรับบทสรุปอื่น ๆ เปลี่ยนข้อโต้แย้งในการคำนวณของfunction
counts
(หรือมิฉะนั้นให้ใช้สเปรดชีตหรือซอฟต์แวร์ฐานข้อมูลเพื่อสรุปไฟล์เอาต์พุตแรกโดยตัวระบุเซลล์)
เป็นการตรวจสอบมาแมปจำนวนด้วยศูนย์กริดเพื่อค้นหาสัญลักษณ์แผนที่ (จุดที่ตั้งอยู่ในทะเลเมดิเตอร์เรเนียนยุโรปและมหาสมุทรแอตแลนติกมีสถานที่ตั้งน่าสงสัย: ฉันสงสัยว่าหลายคนเป็นผลมาจากการรวมละติจูดและลองจิจูดในกระบวนการป้อนข้อมูล)
count.max <- max(counts.m["Count",])
colors = sapply(counts.m["Count",], function(n) hsv(sqrt(n/count.max), .7, .7, .5))
plot(counts.m["X",] + 1/2, counts.m["Y",] + 1/2, cex=sqrt(counts.m["Count",]/100),
pch = 19, col=colors,
xlab="Longitude of cell center", ylab="Latitude of cell center",
main="Event counts within one-degree grid cells")
เวิร์กโฟลว์นี้อยู่ในขณะนี้
จัดทำเอกสารอย่างละเอียด (โดยใช้R
รหัส)
ทำซ้ำได้ (โดยเรียกรหัสนี้ซ้ำ)
Extensible (โดยการแก้ไขโค้ดในรูปแบบที่ชัดเจน) และ
เร็วพอสมควร (การดำเนินการทั้งหมดใช้เวลาน้อยกว่า 10 วินาทีในการประมวลผลการสำรวจ 53052 เหล่านี้)