Convert a list with x, y and z to data frame where x, y and z are of unequal lengths in R

StackOverflow https://stackoverflow.com/questions/14779076

  •  07-03-2022
  •  | 
  •  

Question

I have a situation where I have a data of x, y and z with discrete points. I used akima package to interpolate the x, y and z points as follows.

library(akima) library(geoR) data1 <- read.csv("contour.csv")

x<-data1$X 
y <-data1$Y 
z <- data1$Salinity

jd <- interp(x,y,z) 

When I look at the summary of variable jd is shows as follows:

> summary(jd)
  Length Class  Mode   
x   40   -none- numeric
y   40   -none- numeric
z 1600   -none- numeric

 head(jd)
$x
 [1] 438562.6 439291.8 440021.0 440750.1 441479.3 442208.4 442937.6 443666.8 444395.9 445125.1 445854.3 446583.4 447312.6 448041.7 448770.9
[16] 449500.1 450229.2 450958.4 451687.6 452416.7 453145.9 453875.0 454604.2 455333.4 456062.5 456791.7 457520.9 458250.0 458979.2 459708.3
[31] 460437.5 461166.7 461895.8 462625.0 463354.2 464083.3 464812.5 465541.6 466270.8 467000.0

$y
 [1] 3348039 3348686 3349334 3349982 3350630 3351277 3351925 3352573 3353221 3353868 3354516 3355164 3355811 3356459 3357107 3357755 3358402
[18] 3359050 3359698 3360346 3360993 3361641 3362289 3362936 3363584 3364232 3364880 3365527 3366175 3366823 3367470 3368118 3368766 3369414
[35] 3370061 3370709 3371357 3372005 3372652 3373300

$z
      [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]     [,8]     [,9]    [,10]    [,11]    [,12]    [,13]    [,14]    [,15]
 [1,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
 [2,]   NA       NA       NA       NA       NA 18.71574 17.10335 16.62478 16.11543 15.14366 14.17188 13.50601       NA       NA       NA
 [3,]   NA       NA       NA       NA 21.89464 18.81536 16.80370 16.75368 15.95741 15.02082 14.34328 13.85912 12.88734 11.91557 10.94380
 [4,]   NA       NA       NA       NA 22.32342 18.91173 16.57913 16.82675 15.81215 15.20209 14.47508 13.74807 13.02107 12.29406 11.53566
 [5,]   NA       NA       NA 25.74385 22.41979 19.00810 16.11968 16.39897 15.01279 14.38055 13.80891 13.29606 12.56905 12.65366 12.04914
 [6,]   NA       NA       NA 25.92784 22.51616 19.10447 15.52771 16.29400 14.73203 14.32337 13.73605 13.18126 13.19240 13.28013 13.02879
 [7,]   NA       NA 29.43590 26.02421 22.61253 18.65089 15.64738 16.18430 15.38269 14.48052 13.74105 14.49734 14.23075 13.81929 13.11640
 [8,]   NA       NA 29.53227 26.07000 21.88580 17.51887 15.65061 16.51800 16.08679 15.72274 15.37834 14.93771 14.39266 13.65679 13.00940
 [9,]   NA 33.00112 29.52736 25.76968 22.06680 18.03948 16.60009 17.40118 16.34181 15.93678 15.44747 14.76168 14.08747 13.75458 12.90974
[10,]   NA 34.22111 30.52862 27.20880 23.08026 19.24614 16.69817 17.74406 16.51232 15.97623 15.43038 14.96491 14.67791 13.64814 12.57191
[11,]   NA 33.33584 30.19036 27.40987 24.95383 22.71728 19.14584 17.22947 17.06058 15.93447 16.00417 15.61906 14.57890 13.59449 12.74819
[12,]   NA 32.90973 27.97481 26.46768 26.32858 23.57614 19.04108 17.54636 16.85564 16.84410 16.55817 15.75915 14.91284 14.06654 12.76555
[13,]   NA 34.48335 31.53412 26.40919 22.00703 24.10761 17.11776 18.16298 17.14980 16.65305 16.88235 16.23120 15.38490 14.09612 12.51837
[14,]   NA 33.66080 32.32938 28.23699 21.05087 22.55036 18.07438 18.34346 17.26064 16.51573 16.86190 16.70325 15.42668 13.84894 12.27120
[15,]   NA       NA 32.41577 29.66875 23.59776 20.60085 18.09717 17.93024 19.64474 17.06719 17.15981 16.64390 15.17950 13.60176 12.02402
[16,]   NA       NA 31.56142 30.10294 23.92506 22.73337 20.53772 18.25641 16.26291 20.01113 17.57097 15.98826 14.70423 13.35458 11.89578
[17,]   NA       NA       NA 29.94705 27.19926 23.00028 19.70647 17.21280 16.38213 19.79163 15.16939 15.20904 14.29653 13.11519 13.00132
[18,]   NA       NA       NA 29.33084 28.51597 21.33761 21.11167 19.88850 21.18758 21.76292 20.27480 18.46781 16.55054 14.42923 14.87981
[19,]   NA       NA       NA       NA 27.36045 22.13575 17.01404 20.52726 18.72622 18.82724 18.85308 20.72224 18.76567 14.56480 14.44485
[20,]   NA       NA       NA       NA 27.10025 23.49826 17.95038 22.34124 18.63271 17.23419 17.17958 19.85733 19.49158 16.88207 15.02271
[21,]   NA       NA       NA       NA 26.27491 23.71870 20.22969 21.84924 18.03093 16.74750 15.35027 19.24918 20.43676 18.37605 16.37196
[22,]   NA       NA       NA       NA       NA 24.60396 20.52089 20.44391 17.54888 15.76986 15.65422 18.82818 19.31466 19.08708 16.56192
[23,]   NA       NA       NA       NA       NA 23.90008 20.54693 20.33115 18.08830 15.17747 18.01053 18.71607 18.60055 19.52322 17.53979
[24,]   NA       NA       NA       NA       NA       NA 21.80912 21.22678 20.60361 15.95443 18.29648 18.53598 18.55362 19.41405 18.73032
[25,]   NA       NA       NA       NA       NA       NA 21.87026 21.86509 22.53911 16.75394 16.79886 17.89577 18.53257 18.69387 18.72339
[26,]   NA       NA       NA       NA       NA       NA       NA 20.10637 21.40663 17.30416 15.89197 17.00273 18.30305 18.66460 18.48645
[27,]   NA       NA       NA       NA       NA       NA       NA       NA 20.61700 19.09812 16.24669 16.56761 17.56362 18.22984 18.37394
[28,]   NA       NA       NA       NA       NA       NA       NA       NA       NA 22.52313 21.05539 18.47191 16.18376 16.96282 18.06727
[29,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA 23.57581 20.84710 18.27427 16.83716 17.17981
[30,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA 21.12011 18.10776 17.24194
[31,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA 21.67675 18.66440
[32,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[33,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[34,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[35,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[36,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[37,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[38,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[39,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
[40,]   NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA
          [,16]     [,17]     [,18]     [,19]     [,20]     [,21]     [,22]     [,23]     [,24]     [,25]     [,26]     [,27]     [,28]
 [1,]        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA
 [2,]        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA
 [3,]  9.972027  9.000255  8.505946        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA
 [4,] 10.272009  9.419573  8.994529  7.932493        NA        NA        NA        NA        NA        NA        NA        NA        NA
 [5,] 10.628849 10.142518  9.572304  7.610474  7.093811        NA        NA        NA        NA        NA        NA        NA        NA
 [6,] 11.986533 10.561038  9.107557  7.679234  7.233490  6.787747        NA        NA        NA        NA        NA        NA        NA
 [7,] 11.888592 10.371188  8.979108  7.879674  7.373170  6.927426  6.481682        NA        NA        NA        NA        NA        NA
 [8,] 11.697496 10.298497  8.925107  8.216355  7.559136  7.067105  6.621361  6.208683        NA        NA        NA        NA        NA
 [9,] 11.625176 10.378138  9.262446  8.553036  7.895817  7.238597  6.761041  6.315297        NA        NA        NA        NA        NA
[10,] 11.495688 10.340829  9.599784  8.889718  8.232498  7.575279  6.918059  6.454976  6.009232        NA        NA        NA        NA
[11,] 11.434992 10.672104  9.937123  9.226399  8.569180  7.911960  7.254741  6.597521  6.148912  5.703168        NA        NA        NA
[12,] 11.229570 11.003378 10.274462  9.563080  8.905861  8.248641  7.591422  6.934203  6.288591  5.842847  5.397103        NA        NA
[13,] 11.124544 11.334652 10.611801  9.899762  9.242542  8.585323  7.928103  7.270884  6.613664  5.982527  5.536783  5.138636        NA
[14,] 11.656609 11.665927 10.949140 10.236443  9.579223  8.922004  8.264785  7.607565  6.950346  6.293126  5.676462  5.230718  4.904737
[15,] 12.188674 11.997201 11.286479 10.573124  9.915905  9.258685  8.601466  7.944246  7.287027  6.629808  5.972588  5.370398  4.924654
[16,] 12.720738 12.328475 11.621555 10.909806 10.252586  9.595367  8.938147  8.280928  7.623708  6.966489  6.309269  5.652050  5.064333
[17,] 13.252803 12.659750 11.952829 11.246487 10.589267  9.932048  9.274829  8.617609  7.960390  7.303170  6.645951  5.988731  5.331512
[18,] 14.017727 12.991024 12.284103 11.583168 10.925949 10.268729  9.611510  8.954290  8.297071  7.639851  6.982632  6.325413  5.668193
[19,] 14.196394 13.838348 12.615378 11.919849 11.262630 10.605411  9.948191  9.290972  8.633752  7.976533  7.319313  6.662094  6.004874
[20,] 14.370035 14.310887 13.427372 12.416445 11.599311 10.942092 10.284872  9.627653  8.970434  8.313214  7.655995  6.998775  6.341556
[21,] 15.695481 15.142743 13.795384 13.002303 12.455859 11.568308 10.680758  9.964334  9.307115  8.649895  7.992676  7.335456  6.678237
[22,] 16.456171 15.552775 14.141661 13.504749 13.105627 12.491000 11.603449 10.715899  9.828349  8.986577  8.329357  7.672138  7.014918
[23,] 16.934712 15.899248 14.641009 14.007196 13.755396 13.222379 12.526141 11.638590 10.751040  9.863489  8.975939  8.088389  7.351600
[24,] 18.098146 14.823018 14.305684 14.509643 14.405165 13.811861 13.415789 12.561281 11.673731 10.786181  9.898630  9.011080  8.123530
[25,] 18.896169 18.164800 17.329164 16.414607 14.662011 14.461630 13.868326 13.483973 12.596422 11.708872 10.821322  9.933771  9.046221
[26,] 18.621266 18.439477 17.960360 17.620380 17.060328 15.719245 14.367434 14.075171 13.519114 12.631563 11.744013 10.856463  9.968912
[27,] 18.253482 17.770501 17.001711 16.480688 16.773926 16.670537 16.265960 15.360243 14.647604 13.251814 12.396193 11.540572 10.684951
[28,] 16.721203 17.426353 16.779299 16.247087 16.154149 16.049045 15.841822 15.546302 15.547080 13.065873 12.834513 11.985632 11.130011
[29,] 16.981816 17.040490 16.186935 15.970621 15.994599 15.721584 15.036518 14.351451 15.037422 14.594160 13.886201 11.627806 10.995717
[30,] 17.534112 16.770798 16.050900 15.497960 15.294562 15.091164 14.773093 14.017256 13.206314 12.931739 13.716036 13.084514 12.010938
[31,] 16.566571 16.843269 16.322830 15.816088 15.180315 14.442201 14.130865 13.927467 13.089489 13.043633 13.654607 13.057380 11.000264
[32,] 19.221045 16.208694 15.860814 15.791481 15.062323 14.555494 14.084018 13.567595 12.967169 12.743139 13.126719 12.833004 10.317035
[33,]        NA        NA 16.765338 15.416288 14.906881 14.537702 13.801816 13.294901 12.823424 12.487549 11.854199 12.398868 11.924874
[34,]        NA        NA        NA 17.321982 14.606861 14.305550 14.009046 13.277195 12.541308 12.034308 11.617390 11.860948 12.026635
[35,]        NA        NA        NA        NA        NA 14.866276 13.861024 13.194812 12.752575 12.016688 11.280801 11.324801 11.434212
[36,]        NA        NA        NA        NA        NA        NA 15.422920 13.416497 12.750285 12.226610 11.492068 10.721466 11.441209
[37,]        NA        NA        NA        NA        NA        NA        NA        NA 12.967213 12.305759 11.639547 11.030140 11.264064
[38,]        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA 11.861233 11.195021 10.984987
[39,]        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA 11.416707 11.233573
[40,]        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA        NA
          [,29]     [,30]     [,31]     [,32]     [,33]    [,34]    [,35]    [,36]    [,37]    [,38]    [,39] [,40]
 [1,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [2,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [3,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [4,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [5,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [6,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [7,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [8,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
 [9,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[10,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[11,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[12,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[13,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[14,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[15,]        NA        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[16,]  4.618589        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[17,]  4.758269  4.312525        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA
[18,]  5.010974  4.452204  4.068474        NA        NA       NA       NA       NA       NA       NA       NA    NA
[19,]  5.347655  4.690436  4.146140  3.834689        NA       NA       NA       NA       NA       NA       NA    NA
[20,]  5.684336  5.027117  4.369897  3.840075  3.600790       NA       NA       NA       NA       NA       NA    NA
[21,]  6.021018  5.363798  4.706579  4.049359  3.534011       NA       NA       NA       NA       NA       NA    NA
[22,]  6.357699  5.700479  5.043260  4.386041  3.728821 3.230396       NA       NA       NA       NA       NA    NA
[23,]  6.694380  6.037161  5.379941  4.722722  4.065502 3.408283 2.998206       NA       NA       NA       NA    NA
[24,]  7.235979  6.373842  5.716623  5.059403  4.402184 3.744964 3.087745 2.764642       NA       NA       NA    NA
[25,]  8.158671  7.271120  6.383570  5.496019  4.738865 4.081646 3.424426 2.767207 2.530743       NA       NA    NA
[26,]  9.081362  8.193811  7.306261  6.418711  5.531160 4.643610 3.761107 3.103888 2.449432 2.296844       NA    NA
[27,]  9.829330  8.973709  8.118088  7.262467  6.406845 5.551224 4.678751 3.791201 2.903650 2.160129       NA    NA
[28,] 10.274390  9.418768  8.563147  7.625692  6.544549 5.463407 4.382265 3.301123 2.219981 2.936358 2.362119    NA
[29,]  9.950485  9.184824  8.250277  7.319160  6.393031 5.356377 4.223331 2.702818 3.936342 2.967897 2.483721    NA
[30,] 10.182827  8.018503  6.591706  6.424867  5.900775 4.966228 5.220405 3.723734 3.590249 3.456763 3.243517    NA
[31,]  9.508168  8.016073  6.523977  5.063101  3.568153 7.207894 5.725591 4.563291 4.429806 4.296321       NA    NA
[32,]  9.269526  7.777430  6.285335  5.223145  6.372415 7.671605 6.315327 5.402849 5.269364       NA       NA    NA
[33,]  9.008944  8.117673  7.707511  8.466802  9.649717 8.224953 6.905063 6.242406       NA       NA       NA    NA
[34,] 11.611925 10.173731  9.978024  9.809090  9.650137 8.756020 7.494799 7.081964       NA       NA       NA    NA
[35,] 11.278298 10.791298 10.795251 10.460363 10.134704 9.757141 8.084535       NA       NA       NA       NA    NA
[36,] 11.332906 11.160940 10.793515 10.545474 10.130166 9.733947       NA       NA       NA       NA       NA    NA
[37,] 11.492599 11.355787 11.003180 10.726600 10.481233 9.925862       NA       NA       NA       NA       NA    NA
[38,] 11.349030 11.360750 11.217397 10.880931 10.515334       NA       NA       NA       NA       NA       NA    NA
[39,] 11.284212 11.355039 11.116186 10.880957        NA       NA       NA       NA       NA       NA       NA    NA
[40,] 11.132210        NA        NA        NA        NA       NA       NA       NA       NA       NA       NA    NA

It seems like I have a grid of x and y points and for each x,y data sets I have corresponding z. I want to know whether it is possible to create a data frame out of this list.

I tried to use the following code to create the data frame.

df <- as.data.frame(do.call(rbind,jd))

However, when I try to see the data using the following command I get the error.

df

The error I got is

> df
Error in data.frame(V1 = c(" 438562.6", "3348038.8", "       NA", "       NA",  : 
  duplicate row.names: 

The data can be found on https://www.dropbox.com/s/dbzulncdfz7pqwr/contour.csv

Edit: Thoughts about how data should be interpreted.

I think the data format looks like following:

    X1  X2  X3  X4  X5  X6  X7  X8  X9  X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31 X32 X33 X34 X35 X36 X37 X38 X39 X40
Y1                                                                                                                                                              
Y2                                                                                                                                                              
Y3                                                                                                                                                              
Y4                                                                                                                                                              
Y5                                                                                                                                                              
Y6                                                                                                                                                              
Y7                                                                                                                                                              
Y8                                                                                                                                                              
Y9                                                                                                                                                              
Y10                                                                                                                                                             
Y11                                                                                                                                                             
Y12                                                                                                                                                             
Y13                                                                                                                                                             
Y14                                                                                                                                                             
Y15                                                                                                                                                             
Y16                                                                                                                                                             
Y17                                                                                                                                                             
Y18                                                                                                                                                             
Y19                                                                                                                                                             
Y20                                                                                                                                                             
Y21                                                                                                                                                             
Y22                                                                                                                                                             
Y23                                                                                                                                                             
Y24                                                                                                                                                             
Y25                                                                                                                                                             
Y26                                                                                                                                                             
Y27                                                                                                                                                             
Y28                                                                                                                                                             
Y29                                                                                                                                                             
Y30                                                                                                                                                             
Y31                                                                                                                                                             
Y32                                                                                                                                                             
Y33                                                                                                                                                             
Y34                                                                                                                                                             
Y35                                                                                                                                                             
Y36                                                                                                                                                             
Y37                                                                                                                                                             
Y38                                                                                                                                                             
Y39                                                                                                                                                             
Y40

So, I believe I need to create a data frame such that I should have 1600 points with the combination of X and Y data. Since I have 40 X and 40 Y it should be possible to create 1600 grid points and then all the z points will be the corresponding z for those points. I may be wrong.

Thanks. Jdbaba

Was it helpful?

Solution

I suspect that

data.frame(x = rep(jd$x, each = 40), y = rep(jd$y, times = 40), z = as.vector(jd$z))

is what you need.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top