1

现在我正在清理美国的一些二号排放数据,数据格式如下:

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 
}    

这种方法显然是缓慢且低效的,因为基本上我所做的是遍历整个矩阵并逐个单元格地填充空白。

如果有人能帮我解决这个问题,我将不胜感激!

4

1 回答 1

1

在您发布一些数据之前,这只是一个猜测(尽管这是一个很好的猜测),但在发生这种情况之前,请考虑一下:

 grid_mat <- xtabs( no2 ~ lat +lon, data=one)
于 2013-10-20T02:38:42.597 回答