R中

2013-10-20 68 views
1

現在改變的地理位置數據,以網格窗體我清理在美國的一些NO2排放數據,以及數據的格式是這樣的:R中

lat long no2 

xxx xxx xxx 

xxx xxx xxx 

xxx xxx xxx 

但我想最終是與數據矩陣緯度行名和經度列名,如

 long1 long2 long3 ... 
lat1 xxxx xxxx xxxx 
lat2 xxxx xxxx xxxx 
lat3 xxxx xxxx xxxx 
... 

而且,因爲我不必爲數據在上述矩陣中的每個細胞,我想缺少數據的地方標記爲「0」。

我以前所做的是:

one <- read.table(files[1], header = TRUE, sep = ",") 
one <- one[,1:3] 
row_name <- seq(25.05,49.95, by = 0.1) 
col_name <- seq(-124.95, -65.05, by = 0.1) 
a <- matrix(0, length(row_name), length(col_name)) 
data_matrix <- data.frame(a) 
row.names(data_matrix) <- row_name 
names(data_matrix) <- col_name 

for (i in 1: dim(one)[1]){ 
    lat <- as.character(one[i,]$lat) 
    long <- as.character(one[i,]$long) 
    data_matrix[lat,long] <- one[i,]$no2 
}  

這種方法顯然是緩慢和低效,因爲基本上我所做的是先通過整個基質和細胞的空白單元格的填充。

如果有人能幫我解決這個問題,我將非常感激!

+0

如果我只是寫'xtabs'它本來的字符足以被接納爲一個評論,但這一個功能可能會爲你做所有事情。爲什麼不發佈數據的一個小角落,而不是創建虛擬矩陣? –

+0

你好,歡迎來到SO。爲了提供一個可重現的例子,你可以使用'reproduce()'。說明在這裏:http://bit.ly/SORepro - [如何使一個偉大的R可重現的例子](http://bit.ly/SORepro) –

回答

1

這只是一個猜測(儘管它areasonably很好的猜測),直到您發佈的一些數據,但在此之前考慮這個問題:

grid_mat <- xtabs(no2 ~ lat +lon, data=one) 
+0

其實這已經完美地解決了這個問題。非常感謝! –

+0

您應該添加複選標記以節省其他時間。 –