将数组重新格式化为数据框

时间:2019-10-04 08:16:11

标签: r

我有一个数据集,其中包含307个全球性位置的十年时间(3653天的温度)。数据设置为一个数组(下面的示例),其中包含307个经度和307个纬度的3653个数据值(温度)。

my.array = array(1:344291597, dim=c(307, 307, 3653))

我想生成一个data.frame,其中包含沿列的3653天温度值,并沿两列的行包含坐标。例如:

Lon     Lat     01/01/1971     02/01/1971     03/01/1971     04/01/1971
20.5    60.5    -6.5           -7.1           -5.9           -6.3
20.5    61.5    -6.4           -7.2           -6.8           -6.5
20.5    62.5    -7.7           -7.9           -7.3           -7.4

有解决方案吗?我尝试了各种方法,但都没有成功。

1 个答案:

答案 0 :(得分:2)

我认为这应该有效

my.array = array(1:344291597, dim=c(307, 307, 3653))
#Find locations from array
Locations <- cbind(my.array[,1,1],my.array[1,,1])
#Create new matrix to store temperature values
LocationsData <- matrix(data= NA,nrow = dim(my.array)[1], ncol = dim(my.array)[3])
#Populate new matrix with temperature values 
for (i in 1:dim(my.array)[1]){

    LocationsData[i,] <-as.vector(t(my.array[i,i,]))
}

Desiredoutput <- data.frame(cbind(Locations,LocationsData))
#add correct names
Names(Desiredoutput) <- c("Lon", "Lat", dimnames(my.array)[[3]])