现在我正在清理美国的一些二号排放数据,数据格式如下:
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
}
这种方法显然是缓慢且低效的,因为基本上我所做的是遍历整个矩阵并逐个单元格地填充空白。
如果有人能帮我解决这个问题,我将不胜感激!