R_Extracting coordinates from SpatialPolygonsDataFrame - r

Is it only me who have the problem with extracting coordinates of a polygon from SpatialPolygonsDataFrame object? I am able to extract other slots of the object (ID,plotOrder) but not coordinates (coords). I don't know what I am doing wrong. Please find below my R session where bdryData being the SpatialPolygonsDataFrame object with two polygons.
> bdryData
An object of class "SpatialPolygonsDataFrame"
Slot "data":
ID GRIDCODE
0 1 0
1 2 0
Slot "polygons":
[[1]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 415499.1 432781.7
Slot "area":
[1] 0.6846572
Slot "hole":
[1] FALSE
Slot "ringDir":
[1] 1
Slot "coords":
[,1] [,2]
[1,] 415499.6 432781.2
[2,] 415498.4 432781.5
[3,] 415499.3 432782.4
[4,] 415499.6 432781.2
Slot "plotOrder":
[1] 1
Slot "labpt":
[1] 415499.1 432781.7
Slot "ID":
[1] "0"
Slot "area":
[1] 0.6846572
[[2]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 415587.3 432779.4
Slot "area":
[1] 20712.98
Slot "hole":
[1] FALSE
Slot "ringDir":
[1] 1
Slot "coords":
[,1] [,2]
[1,] 415499.6 432781.2
[2,] 415505.0 432781.8
[3,] 415506.5 432792.6
[4,] 415508.9 432792.8
[5,] 415515.0 432791.5
[6,] 415517.7 432795.6
[7,] 415528.6 432797.7
[8,] 415538.8 432804.2
[9,] 415543.2 432805.8
[10,] 415545.1 432803.6
[11,] 415547.1 432804.7
[12,] 415551.7 432805.8
[13,] 415557.5 432812.3
[14,] 415564.2 432817.1
[15,] 415568.5 432823.9
[16,] 415571.0 432826.8
[17,] 415573.2 432828.7
[18,] 415574.1 432829.7
[19,] 415576.2 432830.7
[20,] 415580.2 432833.8
[21,] 415589.6 432836.0
[22,] 415593.1 432841.0
[23,] 415592.2 432843.7
[24,] 415590.6 432846.6
[25,] 415589.0 432853.3
[26,] 415584.8 432855.3
[27,] 415579.7 432859.8
[28,] 415577.7 432866.2
[29,] 415575.6 432868.1
[30,] 415566.7 432880.7
[31,] 415562.7 432887.5
[32,] 415559.2 432889.1
[33,] 415561.5 432890.7
[34,] 415586.2 432889.7
[35,] 415587.1 432888.6
[36,] 415588.5 432890.2
[37,] 415598.2 432888.7
[38,] 415599.1 432887.7
[39,] 415601.2 432886.7
[40,] 415603.1 432885.7
[41,] 415605.2 432884.7
[42,] 415606.1 432882.7
[43,] 415607.2 432880.7
[44,] 415608.3 432878.3
[45,] 415612.2 432874.8
[46,] 415614.7 432871.9
[47,] 415617.1 432870.7
[48,] 415622.4 432868.2
[49,] 415622.0 432862.4
[50,] 415624.2 432855.4
[51,] 415633.2 432845.3
[52,] 415639.0 432841.1
[53,] 415642.8 432832.9
[54,] 415647.5 432828.7
[55,] 415654.3 432820.3
[56,] 415654.1 432816.5
[57,] 415658.2 432812.8
[58,] 415661.9 432808.6
[59,] 415663.5 432808.7
[60,] 415668.1 432803.5
[61,] 415676.5 432801.3
[62,] 415679.1 432802.7
[63,] 415680.1 432802.7
[64,] 415681.1 432802.7
[65,] 415682.2 432802.7
[66,] 415685.8 432804.7
[67,] 415691.8 432802.2
[68,] 415693.6 432798.9
[69,] 415696.2 432777.0
[70,] 415689.8 432773.5
[71,] 415683.7 432771.6
[72,] 415680.2 432766.7
[73,] 415679.0 432765.6
[74,] 415676.8 432753.7
[75,] 415671.4 432747.7
[76,] 415662.7 432747.2
[77,] 415658.7 432750.0
[78,] 415657.0 432746.3
[79,] 415654.1 432743.7
[80,] 415652.3 432739.8
[81,] 415649.6 432739.6
[82,] 415648.0 432739.7
[83,] 415641.9 432736.4
[84,] 415633.4 432736.9
[85,] 415630.2 432734.7
[86,] 415622.3 432733.6
[87,] 415614.4 432726.5
[88,] 415617.1 432719.1
[89,] 415612.5 432718.1
[90,] 415610.0 432720.9
[91,] 415606.2 432716.6
[92,] 415603.2 432713.9
[93,] 415601.4 432710.0
[94,] 415580.3 432708.7
[95,] 415545.1 432709.7
[96,] 415543.5 432711.5
[97,] 415534.0 432715.7
[98,] 415527.1 432713.7
[99,] 415521.1 432711.6
[100,] 415505.6 432710.6
[101,] 415501.3 432710.9
[102,] 415499.3 432708.7
[103,] 415495.6 432711.6
[104,] 415482.6 432726.2
[105,] 415477.2 432734.0
[106,] 415478.1 432737.7
[107,] 415479.2 432739.7
[108,] 415480.9 432743.4
[109,] 415486.5 432751.2
[110,] 415493.2 432760.7
[111,] 415494.1 432762.7
[112,] 415498.1 432767.9
[113,] 415497.2 432770.7
[114,] 415490.6 432773.2
[115,] 415493.2 432775.6
[116,] 415496.0 432778.7
[117,] 415499.2 432779.7
[118,] 415499.6 432781.2
Slot "plotOrder":
[1] 1
Slot "labpt":
[1] 415587.3 432779.4
Slot "ID":
[1] "1"
Slot "area":
[1] 20712.98
Slot "plotOrder":
[1] 2 1
Slot "bbox":
min max
x 415477.2 415696.2
y 432708.7 432890.7
Slot "proj4string":
CRS arguments:
+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000
+datum=OSGB36 +units=m +no_defs +ellps=airy
+towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894
Subsetting second polygon from bdryData
> bdryData#polygons[[2]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 415587.3 432779.4
Slot "area":
[1] 20712.98
Slot "hole":
[1] FALSE
Slot "ringDir":
[1] 1
Slot "coords":
[,1] [,2]
[1,] 415499.6 432781.2
[2,] 415505.0 432781.8
[3,] 415506.5 432792.6
[4,] 415508.9 432792.8
[5,] 415515.0 432791.5
[6,] 415517.7 432795.6
[7,] 415528.6 432797.7
[8,] 415538.8 432804.2
[9,] 415543.2 432805.8
[10,] 415545.1 432803.6
[11,] 415547.1 432804.7
[12,] 415551.7 432805.8
[13,] 415557.5 432812.3
[14,] 415564.2 432817.1
[15,] 415568.5 432823.9
[16,] 415571.0 432826.8
[17,] 415573.2 432828.7
[18,] 415574.1 432829.7
[19,] 415576.2 432830.7
[20,] 415580.2 432833.8
[21,] 415589.6 432836.0
[22,] 415593.1 432841.0
[23,] 415592.2 432843.7
[24,] 415590.6 432846.6
[25,] 415589.0 432853.3
[26,] 415584.8 432855.3
[27,] 415579.7 432859.8
[28,] 415577.7 432866.2
[29,] 415575.6 432868.1
[30,] 415566.7 432880.7
[31,] 415562.7 432887.5
[32,] 415559.2 432889.1
[33,] 415561.5 432890.7
[34,] 415586.2 432889.7
[35,] 415587.1 432888.6
[36,] 415588.5 432890.2
[37,] 415598.2 432888.7
[38,] 415599.1 432887.7
[39,] 415601.2 432886.7
[40,] 415603.1 432885.7
[41,] 415605.2 432884.7
[42,] 415606.1 432882.7
[43,] 415607.2 432880.7
[44,] 415608.3 432878.3
[45,] 415612.2 432874.8
[46,] 415614.7 432871.9
[47,] 415617.1 432870.7
[48,] 415622.4 432868.2
[49,] 415622.0 432862.4
[50,] 415624.2 432855.4
[51,] 415633.2 432845.3
[52,] 415639.0 432841.1
[53,] 415642.8 432832.9
[54,] 415647.5 432828.7
[55,] 415654.3 432820.3
[56,] 415654.1 432816.5
[57,] 415658.2 432812.8
[58,] 415661.9 432808.6
[59,] 415663.5 432808.7
[60,] 415668.1 432803.5
[61,] 415676.5 432801.3
[62,] 415679.1 432802.7
[63,] 415680.1 432802.7
[64,] 415681.1 432802.7
[65,] 415682.2 432802.7
[66,] 415685.8 432804.7
[67,] 415691.8 432802.2
[68,] 415693.6 432798.9
[69,] 415696.2 432777.0
[70,] 415689.8 432773.5
[71,] 415683.7 432771.6
[72,] 415680.2 432766.7
[73,] 415679.0 432765.6
[74,] 415676.8 432753.7
[75,] 415671.4 432747.7
[76,] 415662.7 432747.2
[77,] 415658.7 432750.0
[78,] 415657.0 432746.3
[79,] 415654.1 432743.7
[80,] 415652.3 432739.8
[81,] 415649.6 432739.6
[82,] 415648.0 432739.7
[83,] 415641.9 432736.4
[84,] 415633.4 432736.9
[85,] 415630.2 432734.7
[86,] 415622.3 432733.6
[87,] 415614.4 432726.5
[88,] 415617.1 432719.1
[89,] 415612.5 432718.1
[90,] 415610.0 432720.9
[91,] 415606.2 432716.6
[92,] 415603.2 432713.9
[93,] 415601.4 432710.0
[94,] 415580.3 432708.7
[95,] 415545.1 432709.7
[96,] 415543.5 432711.5
[97,] 415534.0 432715.7
[98,] 415527.1 432713.7
[99,] 415521.1 432711.6
[100,] 415505.6 432710.6
[101,] 415501.3 432710.9
[102,] 415499.3 432708.7
[103,] 415495.6 432711.6
[104,] 415482.6 432726.2
[105,] 415477.2 432734.0
[106,] 415478.1 432737.7
[107,] 415479.2 432739.7
[108,] 415480.9 432743.4
[109,] 415486.5 432751.2
[110,] 415493.2 432760.7
[111,] 415494.1 432762.7
[112,] 415498.1 432767.9
[113,] 415497.2 432770.7
[114,] 415490.6 432773.2
[115,] 415493.2 432775.6
[116,] 415496.0 432778.7
[117,] 415499.2 432779.7
[118,] 415499.6 432781.2
Slot "plotOrder":
[1] 1
Slot "labpt":
[1] 415587.3 432779.4
Slot "ID":
[1] "1"
Slot "area":
[1] 20712.98
Extracting slots
> bdryData#polygons[[2]]#ID
[1] "1"
> bdryData#polygons[[2]]#plotOrder
[1] 1
But problem with coordinates
> bdryData#polygons[[2]]#coords
Error: no slot of name "coords" for this object of class "Polygons"
Any help is really appreciated. Thanks.

Finally, I figured out that I didn't parse the output correctly. The correct way to do is bdryData#polygons[[2]]#Polygons[[1]]#coords. Mind the difference in command polygons(Polygons and polygons) and it took me ages to find out.

Use the coordinates() function from the sp package. It should give you the values in a list format.
You can also get the Polygon attribute from the shapefile.
mfile = readOGR(dsn=dsn,layer=layername)
polys = attr(mfile,'polygons')
npolys = length(polys)
for (i in 1:npolys){
poly = polys[[i]]
polys2 = attr(poly,'Polygons')
npolys2 = length(polys2)
for (j in 1:npolys2){
#do stuff with these values
coords = coordinates(polys2[[j]])
}
}

This took me a while to figure out too. The following function I wrote worked for me. sp.df should be SpatialPolygonsDataFrame.
extractCoords <- function(sp.df)
{
results <- list()
for(i in 1:length(sp.df#polygons[[1]]#Polygons))
{
results[[i]] <- sp.df#polygons[[1]]#Polygons[[i]]#coords
}
results <- Reduce(rbind, results)
results
}

This question was also addressed on gis.stackexchange, here. I made an example below testing all the options mentioned here by #mdsumner. Also have a look here
library(sp)
library(sf)
#> Warning: package 'sf' was built under R version 3.5.3
#> Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
library(raster)
library(spbabel)
#> Warning: package 'spbabel' was built under R version 3.5.3
library(tmap)
library(microbenchmark)
library(ggplot2)
# Prepare data
data(World)
# Convert from sf to sp objects
atf_sf <- World[World$iso_a3 == "ATF", ]
atf_sp <- as(atf_sf, "Spatial")
atf_sp
#> class : SpatialPolygonsDataFrame
#> features : 1
#> extent : 5490427, 5660887, -6048972, -5932855 (xmin, xmax, ymin, ymax)
#> coord. ref. : +proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
#> variables : 15
#> # A tibble: 1 x 15
#> iso_a3 name sovereignt continent area pop_est pop_est_dens economy
#> <fct> <fct> <fct> <fct> <S3:> <dbl> <dbl> <fct>
#> 1 ATF Fr. ~ France Seven se~ 7257~ 140 0.0193 6. Dev~
#> # ... with 7 more variables: income_grp <fct>, gdp_cap_est <dbl>,
#> # life_exp <dbl>, well_being <dbl>, footprint <dbl>, inequality <dbl>,
#> # HPI <dbl>
# Try various functions:
raster::geom(atf_sp)
#> object part cump hole x y
#> [1,] 1 1 1 0 5550200 -5932855
#> [2,] 1 1 1 0 5589907 -5964836
#> [3,] 1 1 1 0 5660887 -5977490
#> [4,] 1 1 1 0 5656160 -5996685
#> [5,] 1 1 1 0 5615621 -6042456
#> [6,] 1 1 1 0 5490427 -6048972
#> [7,] 1 1 1 0 5509148 -5995424
#> [8,] 1 1 1 0 5536900 -5953683
#> [9,] 1 1 1 0 5550200 -5932855
ggplot2::fortify(atf_sp)
#> Regions defined for each Polygons
#> long lat order hole piece id group
#> 1 5550200 -5932855 1 FALSE 1 8 8.1
#> 2 5589907 -5964836 2 FALSE 1 8 8.1
#> 3 5660887 -5977490 3 FALSE 1 8 8.1
#> 4 5656160 -5996685 4 FALSE 1 8 8.1
#> 5 5615621 -6042456 5 FALSE 1 8 8.1
#> 6 5490427 -6048972 6 FALSE 1 8 8.1
#> 7 5509148 -5995424 7 FALSE 1 8 8.1
#> 8 5536900 -5953683 8 FALSE 1 8 8.1
#> 9 5550200 -5932855 9 FALSE 1 8 8.1
spbabel::sptable(atf_sp)
#> # A tibble: 9 x 6
#> object_ branch_ island_ order_ x_ y_
#> <int> <int> <lgl> <int> <dbl> <dbl>
#> 1 1 1 TRUE 1 5550200. -5932855.
#> 2 1 1 TRUE 2 5589907. -5964836.
#> 3 1 1 TRUE 3 5660887. -5977490.
#> 4 1 1 TRUE 4 5656160. -5996685.
#> 5 1 1 TRUE 5 5615621. -6042456.
#> 6 1 1 TRUE 6 5490427. -6048972.
#> 7 1 1 TRUE 7 5509148. -5995424.
#> 8 1 1 TRUE 8 5536900. -5953683.
#> 9 1 1 TRUE 9 5550200. -5932855.
as.data.frame(as(as(atf_sp, "SpatialLinesDataFrame"),"SpatialPointsDataFrame"))
#> iso_a3 name sovereignt continent
#> 8 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.1 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.2 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.3 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.4 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.5 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.6 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.7 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> 8.8 ATF Fr. S. Antarctic Lands France Seven seas (open ocean)
#> area pop_est pop_est_dens economy
#> 8 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.1 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.2 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.3 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.4 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.5 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.6 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.7 7257.455 [km^2] 140 0.01929051 6. Developing region
#> 8.8 7257.455 [km^2] 140 0.01929051 6. Developing region
#> income_grp gdp_cap_est life_exp well_being footprint
#> 8 2. High income: nonOECD 114285.7 NA NA NA
#> 8.1 2. High income: nonOECD 114285.7 NA NA NA
#> 8.2 2. High income: nonOECD 114285.7 NA NA NA
#> 8.3 2. High income: nonOECD 114285.7 NA NA NA
#> 8.4 2. High income: nonOECD 114285.7 NA NA NA
#> 8.5 2. High income: nonOECD 114285.7 NA NA NA
#> 8.6 2. High income: nonOECD 114285.7 NA NA NA
#> 8.7 2. High income: nonOECD 114285.7 NA NA NA
#> 8.8 2. High income: nonOECD 114285.7 NA NA NA
#> inequality HPI Lines.NR Lines.ID Line.NR coords.x1 coords.x2
#> 8 NA NA 1 8 1 5550200 -5932855
#> 8.1 NA NA 1 8 1 5589907 -5964836
#> 8.2 NA NA 1 8 1 5660887 -5977490
#> 8.3 NA NA 1 8 1 5656160 -5996685
#> 8.4 NA NA 1 8 1 5615621 -6042456
#> 8.5 NA NA 1 8 1 5490427 -6048972
#> 8.6 NA NA 1 8 1 5509148 -5995424
#> 8.7 NA NA 1 8 1 5536900 -5953683
#> 8.8 NA NA 1 8 1 5550200 -5932855
# What about speed? raster::geom is the fastest
res <- microbenchmark(raster::geom(atf_sp),
ggplot2::fortify(atf_sp),
spbabel::sptable(atf_sp),
as.data.frame(as(as(atf_sp, "SpatialLinesDataFrame"),
"SpatialPointsDataFrame")))
ggplot2::autoplot(res)
#> Coordinate system already present. Adding new coordinate system, which will replace the existing one.
Created on 2019-03-23 by the reprex package (v0.2.1)

ggplot2's fortify() function may be deprecated at some point so the broom package is now suggested
library(broom)
broom::tidy(atf_sp)

The only valid answer on this posting was provided by the author "repres_package" above. See that author's recommended solutions if you want to get the right answer. If you want to obtain the geometry of a polygon dataset, you are seeking the long and lat for every single vertex in the polygon feature class. The author's suggestion of using raster::geom() or ggplot2::fortify(), for example, will give you the total number of vertices that are contained in the spatialpolygonsdataframe. That's what you want. The other author's fail to do so.
For example, in my spatialpolygonsdataframe of North Carolina counties (from US Census), I have a total of 1259547 vertices. By using raster::geom(NC_counties), I am given a dataframe that contains a long and lat for each of those 1259547 vertices. I could also use gglot2::fortify(NC_counties) to obtain coordinates for those 1259547 vertices. All of the valid options are given in the answer by "repres_package".
When I ran the recommended codes in the other answers on this posting, I obtained long and lat coordinates for only 672 vertices, 1041 vertices, or 1721 vertices, which is off by over one million vertices. I'm supposed to get long and lat coordiates for 1259547 vertices. I suspect that those codes are interpolating centroids for the polygons, which is not the geometry of the polygons.

Related

How do I calculate perimeter of xy points in R?

I am looking to calculate the perimeter of xy points (including all the points in sequential order), where the first and last point aren't always equal. I can't figure out why the code below for calculating perimeter isn't working.
Ideally, I would like a method which flags when the first and last xy points are different.
Thanks
m
x y
[1,] 606.3 95.4
[2,] 612.4 178.7
[3,] 610.2 222.6
[4,] 610.2 222.8
[5,] 625.8 249.8
[6,] 625.8 250.1
[7,] 633.9 268.9
[8,] 668.7 272.2
[9,] 693.7 222.6
[10,] 723.2 157.0
[11,] 738.6 109.9
[12,] 681.2 90.5
[13,] 606.3 95.4
[14,] 833.3 154.6
[15,] 753.7 267.5
[16,] 747.8 305.1
[17,] 773.8 354.7
[18,] 767.0 393.8
[19,] 763.0 442.0
[20,] 817.4 446.9
[21,] 817.6 446.9
[22,] 840.2 412.3
[23,] 892.1 317.7
[24,] 875.3 218.8
[25,] 833.3 154.6
library(geosphere)
perimeter(m)
**Error in perimeter(m) : could not find function "perimeter"**
This will do the trick..
sample data
library( data.table )
m <- fread("x y
606.3 95.4
612.4 178.7
610.2 222.6
610.2 222.8
625.8 249.8
625.8 250.1
633.9 268.9
668.7 272.2
693.7 222.6
723.2 157.0
738.6 109.9
681.2 90.5
606.3 95.4
833.3 154.6
753.7 267.5
747.8 305.1
773.8 354.7
767.0 393.8
763.0 442.0
817.4 446.9
817.6 446.9
840.2 412.3
892.1 317.7
875.3 218.8
833.3 154.6")
code
library( grDevices )
hull <- chull( m ) #create coordinates of convex hull
coords <- m[ c( hull, hull[1]), ] # create a closed perimeter-polygon
#plot it
plot(m) #plot points
lines(coords, col="red") #plot perimeter

Use of conditions to compute rows in Matrices

I have the following list object pgo_computation
pgo_computation
$tab_frpgo01_03_id
[,1] [,2] [,3] [,4] [,5]
[1,] 61197.50 50.83127 68.62763 45.61025 NA
[2,] 53069.96 44.58885 70.92915 49.70095 NA
[3,] 52915.62 41.43472 67.48709 52.36556 NA
[4,] 48079.70 38.98638 69.93071 54.18271 NA
[5,] 43663.61 36.62010 71.85329 56.07181 NA
[6,] 44779.24 37.41887 65.12148 57.55446 NA
[7,] 58961.00 49.45512 63.20634 58.65441 NA
[8,] 68481.37 58.12665 64.47691 60.36152 NA
[9,] 69754.89 60.43517 70.32266 62.54470 NA
[10,] 71436.86 58.64501 73.85853 64.88341 NA
[11,] 86556.53 69.99052 74.39722 67.25120 NA
[12,] 77780.34 69.04796 71.73626 69.22237 NA
[13,] 84344.09 74.45551 71.98332 70.68963 NA
[14,] 75206.94 70.09172 74.36378 72.20682 NA
[15,] 81362.46 72.20754 74.46316 73.71524 NA
[16,] 94262.73 81.13488 75.51454 75.34195 NA
[17,] 93415.79 80.27772 81.70116 76.46221 NA
[18,] 83356.23 71.12747 78.35197 77.37070 NA
[19,] 83891.89 70.60782 74.36657 77.64845 NA
[20,] 79555.75 67.58067 70.48241 78.83179 NA
[21,] 69952.24 59.90915 71.00253 80.80679 NA
[22,] 69371.77 59.04403 73.73129 82.18598 NA
[23,] 72813.47 62.74812 70.69789 83.17191 NA
[24,] 82077.88 76.07756 76.36066 84.95746 NA
[25,] 92931.28 85.04223 84.56366 87.45263 NA
[26,] 92845.21 86.98376 81.66493 90.57314 NA
[27,] 90899.11 90.00267 82.25471 93.47729 NA
[28,] 107746.64 100.32086 95.73597 96.06590 NA
[29,] 117741.81 110.17729 106.44017 99.08321 NA
[30,] 103889.66 103.27104 92.87811 98.25567 NA
[31,] 106385.91 100.00000 100.00000 100.00000 NA
[32,] 119215.73 107.03833 120.59851 102.85797 NA
[33,] 108805.99 100.19533 125.82197 104.57031 NA
[34,] 102515.97 103.82839 128.09005 105.87292 NA
[35,] 110117.33 103.68537 127.18914 107.46275 NA
[36,] 94965.44 86.45841 115.17443 107.26643 NA
[37,] NA 86.28260 NA 108.05543 NA
[38,] NA 83.92894 NA 109.89962 NA
[39,] NA 82.29632 NA 111.50721 NA
[40,] NA 91.53973 NA 113.60008 NA
[41,] NA 101.55865 NA 116.10783 NA
[42,] NA 107.37999 NA 118.68726 NA
[43,] NA 111.63570 NA 121.31223 NA
[44,] NA 115.14157 NA 123.97757 NA
[45,] NA 118.34679 NA 126.64159 NA
[46,] NA 121.27528 NA 129.30434 NA
[47,] NA 123.97783 NA 131.99454 NA
[48,] NA 126.72214 NA 134.74379 NA
[49,] NA 129.39579 NA 137.63494 NA
[50,] NA 131.99770 NA 140.66371 NA
[51,] NA 134.63692 NA 143.76488 NA
[52,] NA 137.32613 NA 146.95503 NA
[53,] NA 140.07149 NA 150.22311 NA
[54,] NA 142.89485 NA 153.55776 NA
[55,] NA 145.74041 NA 156.97532 NA
[56,] NA 148.64303 NA 160.46257 NA
[57,] NA 151.59553 NA 164.05430 NA
$tab_frpgo05_id
[,1] [,2] [,3] [,4] [,5]
[1,] 606.611 50.83127 62.42483 45.61025 NA
[2,] 541.982 44.58885 67.51353 49.70095 NA
[3,] 488.142 41.43472 70.45975 52.36556 NA
[4,] 447.717 38.98638 66.65260 54.18271 NA
[5,] 396.602 36.62010 66.45550 56.07181 NA
[6,] 403.575 37.41887 66.03600 57.55446 NA
[7,] 484.709 49.45512 62.34575 58.65441 NA
[8,] 528.268 58.12665 59.35909 60.36152 NA
[9,] 482.730 60.43517 56.06016 62.54470 NA
[10,] 453.475 58.64501 55.74644 64.88341 NA
[11,] 501.214 69.99052 55.81720 67.25120 NA
[12,] 481.897 69.04796 55.54264 69.22237 NA
[13,] 501.274 74.45551 54.46242 70.68963 NA
[14,] 429.002 70.09172 50.81890 72.20682 NA
[15,] 435.653 72.20754 50.64076 73.71524 NA
[16,] 464.742 81.13488 51.75018 75.34195 NA
[17,] 434.252 80.27772 50.24811 76.46221 NA
[18,] 223.274 71.12747 49.02389 77.37070 NA
[19,] 262.703 70.60782 49.17672 77.64845 NA
[20,] 151.623 67.58067 48.20985 78.83179 NA
[21,] 202.097 59.90915 49.03256 80.80679 NA
[22,] 200.542 59.04403 50.64192 82.18598 NA
[23,] 187.955 62.74812 52.70286 83.17191 NA
[24,] 154.251 76.07756 53.26376 84.95746 NA
[25,] 148.210 85.04223 57.50246 87.45263 NA
[26,] 247.455 86.98376 66.43959 90.57314 NA
[27,] 385.576 90.00267 71.23184 93.47729 NA
[28,] 380.786 100.32086 74.85468 96.06590 NA
[29,] 292.484 110.17729 88.50022 99.08321 NA
[30,] 221.454 103.27104 93.07073 98.25567 NA
[31,] 208.111 100.00000 100.00000 100.00000 NA
[32,] 239.235 107.03833 109.18799 102.85797 NA
[33,] 264.751 100.19533 108.66621 104.57031 NA
[34,] 322.127 103.82839 104.11996 105.87292 NA
[35,] 318.313 103.68537 99.98200 107.46275 NA
[36,] 194.482 86.45841 97.63002 107.26643 NA
[37,] NA 86.28260 NA 108.05543 NA
[38,] NA 83.92894 NA 109.89962 NA
[39,] NA 82.29632 NA 111.50721 NA
[40,] NA 91.53973 NA 113.60008 NA
[41,] NA 101.55865 NA 116.10783 NA
[42,] NA 107.37999 NA 118.68726 NA
[43,] NA 111.63570 NA 121.31223 NA
[44,] NA 115.14157 NA 123.97757 NA
[45,] NA 118.34679 NA 126.64159 NA
[46,] NA 121.27528 NA 129.30434 NA
[47,] NA 123.97783 NA 131.99454 NA
[48,] NA 126.72214 NA 134.74379 NA
[49,] NA 129.39579 NA 137.63494 NA
[50,] NA 131.99770 NA 140.66371 NA
[51,] NA 134.63692 NA 143.76488 NA
[52,] NA 137.32613 NA 146.95503 NA
[53,] NA 140.07149 NA 150.22311 NA
[54,] NA 142.89485 NA 153.55776 NA
[55,] NA 145.74041 NA 156.97532 NA
[56,] NA 148.64303 NA 160.46257 NA
[57,] NA 151.59553 NA 164.05430 NA
$tab_uspgo01_03_id
[,1] [,2] [,3] [,4] [,5]
[1,] 162759 45.61025 68.62763 45.61025 NA
[2,] 178744 49.70095 70.92915 49.70095 NA
[3,] 171164 52.36556 67.48709 52.36556 NA
[4,] 156225 54.18271 69.93071 54.18271 NA
[5,] 181960 56.07181 71.85329 56.07181 NA
[6,] 172507 57.55446 65.12148 57.55446 NA
[7,] 165704 58.65441 63.20634 58.65441 NA
[8,] 175097 60.36152 64.47691 60.36152 NA
[9,] 183236 62.54470 70.32266 62.54470 NA
[10,] 201975 64.88341 73.85853 64.88341 NA
[11,] 211193 67.25120 74.39722 67.25120 NA
[12,] 205421 69.22237 71.73626 69.22237 NA
[13,] 217009 70.68963 71.98332 70.68963 NA
[14,] 218591 72.20682 74.36378 72.20682 NA
[15,] 237711 73.71524 74.46316 73.71524 NA
[16,] 232653 75.34195 75.51454 75.34195 NA
[17,] 255595 76.46221 81.70116 76.46221 NA
[18,] 257791 77.37070 78.35197 77.37070 NA
[19,] 249705 77.64845 74.36657 77.64845 NA
[20,] 245248 78.83179 70.48241 78.83179 NA
[21,] 243533 80.80679 71.00253 80.80679 NA
[22,] 251233 82.18598 73.73129 82.18598 NA
[23,] 241336 83.17191 70.69789 83.17191 NA
[24,] 268152 84.95746 76.36066 84.95746 NA
[25,] 307154 87.45263 84.56366 87.45263 NA
[26,] 299633 90.57314 81.66493 90.57314 NA
[27,] 303499 93.47729 82.25471 93.47729 NA
[28,] 346942 96.06590 95.73597 96.06590 NA
[29,] 380539 99.08321 106.44017 99.08321 NA
[30,] 341925 98.25567 92.87811 98.25567 NA
[31,] 372752 100.00000 100.00000 100.00000 NA
[32,] 434661 102.85797 120.59851 102.85797 NA
[33,] 447301 104.57031 125.82197 104.57031 NA
[34,] 481151 105.87292 128.09005 105.87292 NA
[35,] 492012 107.46275 127.18914 107.46275 NA
[36,] 446731 107.26643 115.17443 107.26643 NA
[37,] 421469 108.05543 NA 108.05543 NA
[38,] NA 109.89962 NA 109.89962 NA
[39,] NA 111.50721 NA 111.50721 NA
[40,] NA 113.60008 NA 113.60008 NA
[41,] NA 116.10783 NA 116.10783 NA
[42,] NA 118.68726 NA 118.68726 NA
[43,] NA 121.31223 NA 121.31223 NA
[44,] NA 123.97757 NA 123.97757 NA
[45,] NA 126.64159 NA 126.64159 NA
[46,] NA 129.30434 NA 129.30434 NA
[47,] NA 131.99454 NA 131.99454 NA
[48,] NA 134.74379 NA 134.74379 NA
[49,] NA 137.63494 NA 137.63494 NA
[50,] NA 140.66371 NA 140.66371 NA
[51,] NA 143.76488 NA 143.76488 NA
[52,] NA 146.95503 NA 146.95503 NA
[53,] NA 150.22311 NA 150.22311 NA
[54,] NA 153.55776 NA 153.55776 NA
[55,] NA 156.97532 NA 156.97532 NA
[56,] NA 160.46257 NA 160.46257 NA
[57,] NA 164.05430 NA 164.05430 NA
$tab_uspgo05_id
[,1] [,2] [,3] [,4] [,5]
[1,] 26216 45.61025 62.42483 45.61025 NA
[2,] 28524 49.70095 67.51353 49.70095 NA
[3,] 29438 52.36556 70.45975 52.36556 NA
[4,] 24650 54.18271 66.65260 54.18271 NA
[5,] 28549 56.07181 66.45550 56.07181 NA
[6,] 27288 57.55446 66.03600 57.55446 NA
[7,] 25440 58.65441 62.34575 58.65441 NA
[8,] 25024 60.36152 59.35909 60.36152 NA
[9,] 25964 62.54470 56.06016 62.54470 NA
[10,] 26034 64.88341 55.74644 64.88341 NA
[11,] 28111 67.25120 55.81720 67.25120 NA
[12,] 28141 69.22237 55.54264 69.22237 NA
[13,] 26373 70.68963 54.46242 70.68963 NA
[14,] 24615 72.20682 50.81890 72.20682 NA
[15,] 26564 73.71524 50.64076 73.71524 NA
[16,] 25744 75.34195 51.75018 75.34195 NA
[17,] 26169 76.46221 50.24811 76.46221 NA
[18,] 28327 77.37070 49.02389 77.37070 NA
[19,] 28511 77.64845 49.17672 77.64845 NA
[20,] 24763 78.83179 48.20985 78.83179 NA
[21,] 24635 80.80679 49.03256 80.80679 NA
[22,] 26483 82.18598 50.64192 82.18598 NA
[23,] 25535 83.17191 52.70286 83.17191 NA
[24,] 25983 84.95746 53.26376 84.95746 NA
[25,] 29986 87.45263 57.50246 87.45263 NA
[26,] 37549 90.57314 66.43959 90.57314 NA
[27,] 44497 93.47729 71.23184 93.47729 NA
[28,] 48185 96.06590 74.85468 96.06590 NA
[29,] 56937 99.08321 88.50022 99.08321 NA
[30,] 55827 98.25567 93.07073 98.25567 NA
[31,] 59100 100.00000 100.00000 100.00000 NA
[32,] 71537 102.85797 109.18799 102.85797 NA
[33,] 68142 104.57031 108.66621 104.57031 NA
[34,] 61962 105.87292 104.11996 105.87292 NA
[35,] 61266 107.46275 99.98200 107.46275 NA
[36,] 51775 107.26643 97.63002 107.26643 NA
[37,] 32958 108.05543 NA 108.05543 NA
[38,] NA 109.89962 NA 109.89962 NA
[39,] NA 111.50721 NA 111.50721 NA
[40,] NA 113.60008 NA 113.60008 NA
[41,] NA 116.10783 NA 116.10783 NA
[42,] NA 118.68726 NA 118.68726 NA
[43,] NA 121.31223 NA 121.31223 NA
[44,] NA 123.97757 NA 123.97757 NA
[45,] NA 126.64159 NA 126.64159 NA
[46,] NA 129.30434 NA 129.30434 NA
[47,] NA 131.99454 NA 131.99454 NA
[48,] NA 134.74379 NA 134.74379 NA
[49,] NA 137.63494 NA 137.63494 NA
[50,] NA 140.66371 NA 140.66371 NA
[51,] NA 143.76488 NA 143.76488 NA
[52,] NA 146.95503 NA 146.95503 NA
[53,] NA 150.22311 NA 150.22311 NA
[54,] NA 153.55776 NA 153.55776 NA
[55,] NA 156.97532 NA 156.97532 NA
[56,] NA 160.46257 NA 160.46257 NA
[57,] NA 164.05430 NA 164.05430 NA
> pgo_computation
$tab_frpgo01_03_id
[,1] [,2] [,3] [,4] [,5]
[1,] 61197.50 50.83127 68.62763 45.61025 NA
[2,] 53069.96 44.58885 70.92915 49.70095 NA
[3,] 52915.62 41.43472 67.48709 52.36556 NA
[4,] 48079.70 38.98638 69.93071 54.18271 NA
[5,] 43663.61 36.62010 71.85329 56.07181 NA
[6,] 44779.24 37.41887 65.12148 57.55446 NA
[7,] 58961.00 49.45512 63.20634 58.65441 NA
[8,] 68481.37 58.12665 64.47691 60.36152 NA
[9,] 69754.89 60.43517 70.32266 62.54470 NA
[10,] 71436.86 58.64501 73.85853 64.88341 NA
[11,] 86556.53 69.99052 74.39722 67.25120 NA
[12,] 77780.34 69.04796 71.73626 69.22237 NA
[13,] 84344.09 74.45551 71.98332 70.68963 NA
[14,] 75206.94 70.09172 74.36378 72.20682 NA
[15,] 81362.46 72.20754 74.46316 73.71524 NA
[16,] 94262.73 81.13488 75.51454 75.34195 NA
[17,] 93415.79 80.27772 81.70116 76.46221 NA
[18,] 83356.23 71.12747 78.35197 77.37070 NA
[19,] 83891.89 70.60782 74.36657 77.64845 NA
[20,] 79555.75 67.58067 70.48241 78.83179 NA
[21,] 69952.24 59.90915 71.00253 80.80679 NA
[22,] 69371.77 59.04403 73.73129 82.18598 NA
[23,] 72813.47 62.74812 70.69789 83.17191 NA
[24,] 82077.88 76.07756 76.36066 84.95746 NA
[25,] 92931.28 85.04223 84.56366 87.45263 NA
[26,] 92845.21 86.98376 81.66493 90.57314 NA
[27,] 90899.11 90.00267 82.25471 93.47729 NA
[28,] 107746.64 100.32086 95.73597 96.06590 NA
[29,] 117741.81 110.17729 106.44017 99.08321 NA
[30,] 103889.66 103.27104 92.87811 98.25567 NA
[31,] 106385.91 100.00000 100.00000 100.00000 NA
[32,] 119215.73 107.03833 120.59851 102.85797 NA
[33,] 108805.99 100.19533 125.82197 104.57031 NA
[34,] 102515.97 103.82839 128.09005 105.87292 NA
[35,] 110117.33 103.68537 127.18914 107.46275 NA
[36,] 94965.44 86.45841 115.17443 107.26643 NA
[37,] NA 86.28260 NA 108.05543 NA
[38,] NA 83.92894 NA 109.89962 NA
[39,] NA 82.29632 NA 111.50721 NA
[40,] NA 91.53973 NA 113.60008 NA
[41,] NA 101.55865 NA 116.10783 NA
[42,] NA 107.37999 NA 118.68726 NA
[43,] NA 111.63570 NA 121.31223 NA
[44,] NA 115.14157 NA 123.97757 NA
[45,] NA 118.34679 NA 126.64159 NA
[46,] NA 121.27528 NA 129.30434 NA
[47,] NA 123.97783 NA 131.99454 NA
[48,] NA 126.72214 NA 134.74379 NA
[49,] NA 129.39579 NA 137.63494 NA
[50,] NA 131.99770 NA 140.66371 NA
[51,] NA 134.63692 NA 143.76488 NA
[52,] NA 137.32613 NA 146.95503 NA
[53,] NA 140.07149 NA 150.22311 NA
[54,] NA 142.89485 NA 153.55776 NA
[55,] NA 145.74041 NA 156.97532 NA
[56,] NA 148.64303 NA 160.46257 NA
[57,] NA 151.59553 NA 164.05430 NA
$tab_frpgo05_id
[,1] [,2] [,3] [,4] [,5]
[1,] 606.611 50.83127 62.42483 45.61025 NA
[2,] 541.982 44.58885 67.51353 49.70095 NA
[3,] 488.142 41.43472 70.45975 52.36556 NA
[4,] 447.717 38.98638 66.65260 54.18271 NA
[5,] 396.602 36.62010 66.45550 56.07181 NA
[6,] 403.575 37.41887 66.03600 57.55446 NA
[7,] 484.709 49.45512 62.34575 58.65441 NA
[8,] 528.268 58.12665 59.35909 60.36152 NA
[9,] 482.730 60.43517 56.06016 62.54470 NA
[10,] 453.475 58.64501 55.74644 64.88341 NA
[11,] 501.214 69.99052 55.81720 67.25120 NA
[12,] 481.897 69.04796 55.54264 69.22237 NA
[13,] 501.274 74.45551 54.46242 70.68963 NA
[14,] 429.002 70.09172 50.81890 72.20682 NA
[15,] 435.653 72.20754 50.64076 73.71524 NA
[16,] 464.742 81.13488 51.75018 75.34195 NA
[17,] 434.252 80.27772 50.24811 76.46221 NA
[18,] 223.274 71.12747 49.02389 77.37070 NA
[19,] 262.703 70.60782 49.17672 77.64845 NA
[20,] 151.623 67.58067 48.20985 78.83179 NA
[21,] 202.097 59.90915 49.03256 80.80679 NA
[22,] 200.542 59.04403 50.64192 82.18598 NA
[23,] 187.955 62.74812 52.70286 83.17191 NA
[24,] 154.251 76.07756 53.26376 84.95746 NA
[25,] 148.210 85.04223 57.50246 87.45263 NA
[26,] 247.455 86.98376 66.43959 90.57314 NA
[27,] 385.576 90.00267 71.23184 93.47729 NA
[28,] 380.786 100.32086 74.85468 96.06590 NA
[29,] 292.484 110.17729 88.50022 99.08321 NA
[30,] 221.454 103.27104 93.07073 98.25567 NA
[31,] 208.111 100.00000 100.00000 100.00000 NA
[32,] 239.235 107.03833 109.18799 102.85797 NA
[33,] 264.751 100.19533 108.66621 104.57031 NA
[34,] 322.127 103.82839 104.11996 105.87292 NA
[35,] 318.313 103.68537 99.98200 107.46275 NA
[36,] 194.482 86.45841 97.63002 107.26643 NA
[37,] NA 86.28260 NA 108.05543 NA
[38,] NA 83.92894 NA 109.89962 NA
[39,] NA 82.29632 NA 111.50721 NA
[40,] NA 91.53973 NA 113.60008 NA
[41,] NA 101.55865 NA 116.10783 NA
[42,] NA 107.37999 NA 118.68726 NA
[43,] NA 111.63570 NA 121.31223 NA
[44,] NA 115.14157 NA 123.97757 NA
[45,] NA 118.34679 NA 126.64159 NA
[46,] NA 121.27528 NA 129.30434 NA
[47,] NA 123.97783 NA 131.99454 NA
[48,] NA 126.72214 NA 134.74379 NA
[49,] NA 129.39579 NA 137.63494 NA
[50,] NA 131.99770 NA 140.66371 NA
[51,] NA 134.63692 NA 143.76488 NA
[52,] NA 137.32613 NA 146.95503 NA
[53,] NA 140.07149 NA 150.22311 NA
[54,] NA 142.89485 NA 153.55776 NA
[55,] NA 145.74041 NA 156.97532 NA
[56,] NA 148.64303 NA 160.46257 NA
[57,] NA 151.59553 NA 164.05430 NA
$tab_uspgo01_03_id
[,1] [,2] [,3] [,4] [,5]
[1,] 162759 45.61025 68.62763 45.61025 NA
[2,] 178744 49.70095 70.92915 49.70095 NA
[3,] 171164 52.36556 67.48709 52.36556 NA
[4,] 156225 54.18271 69.93071 54.18271 NA
[5,] 181960 56.07181 71.85329 56.07181 NA
[6,] 172507 57.55446 65.12148 57.55446 NA
[7,] 165704 58.65441 63.20634 58.65441 NA
[8,] 175097 60.36152 64.47691 60.36152 NA
[9,] 183236 62.54470 70.32266 62.54470 NA
[10,] 201975 64.88341 73.85853 64.88341 NA
[11,] 211193 67.25120 74.39722 67.25120 NA
[12,] 205421 69.22237 71.73626 69.22237 NA
[13,] 217009 70.68963 71.98332 70.68963 NA
[14,] 218591 72.20682 74.36378 72.20682 NA
[15,] 237711 73.71524 74.46316 73.71524 NA
[16,] 232653 75.34195 75.51454 75.34195 NA
[17,] 255595 76.46221 81.70116 76.46221 NA
[18,] 257791 77.37070 78.35197 77.37070 NA
[19,] 249705 77.64845 74.36657 77.64845 NA
[20,] 245248 78.83179 70.48241 78.83179 NA
[21,] 243533 80.80679 71.00253 80.80679 NA
[22,] 251233 82.18598 73.73129 82.18598 NA
[23,] 241336 83.17191 70.69789 83.17191 NA
[24,] 268152 84.95746 76.36066 84.95746 NA
[25,] 307154 87.45263 84.56366 87.45263 NA
[26,] 299633 90.57314 81.66493 90.57314 NA
[27,] 303499 93.47729 82.25471 93.47729 NA
[28,] 346942 96.06590 95.73597 96.06590 NA
[29,] 380539 99.08321 106.44017 99.08321 NA
[30,] 341925 98.25567 92.87811 98.25567 NA
[31,] 372752 100.00000 100.00000 100.00000 NA
[32,] 434661 102.85797 120.59851 102.85797 NA
[33,] 447301 104.57031 125.82197 104.57031 NA
[34,] 481151 105.87292 128.09005 105.87292 NA
[35,] 492012 107.46275 127.18914 107.46275 NA
[36,] 446731 107.26643 115.17443 107.26643 NA
[37,] 421469 108.05543 NA 108.05543 NA
[38,] NA 109.89962 NA 109.89962 NA
[39,] NA 111.50721 NA 111.50721 NA
[40,] NA 113.60008 NA 113.60008 NA
[41,] NA 116.10783 NA 116.10783 NA
[42,] NA 118.68726 NA 118.68726 NA
[43,] NA 121.31223 NA 121.31223 NA
[44,] NA 123.97757 NA 123.97757 NA
[45,] NA 126.64159 NA 126.64159 NA
[46,] NA 129.30434 NA 129.30434 NA
[47,] NA 131.99454 NA 131.99454 NA
[48,] NA 134.74379 NA 134.74379 NA
[49,] NA 137.63494 NA 137.63494 NA
[50,] NA 140.66371 NA 140.66371 NA
[51,] NA 143.76488 NA 143.76488 NA
[52,] NA 146.95503 NA 146.95503 NA
[53,] NA 150.22311 NA 150.22311 NA
[54,] NA 153.55776 NA 153.55776 NA
[55,] NA 156.97532 NA 156.97532 NA
[56,] NA 160.46257 NA 160.46257 NA
[57,] NA 164.05430 NA 164.05430 NA
$tab_uspgo05_id
[,1] [,2] [,3] [,4] [,5]
[1,] 26216 45.61025 62.42483 45.61025 NA
[2,] 28524 49.70095 67.51353 49.70095 NA
[3,] 29438 52.36556 70.45975 52.36556 NA
[4,] 24650 54.18271 66.65260 54.18271 NA
[5,] 28549 56.07181 66.45550 56.07181 NA
[6,] 27288 57.55446 66.03600 57.55446 NA
[7,] 25440 58.65441 62.34575 58.65441 NA
[8,] 25024 60.36152 59.35909 60.36152 NA
[9,] 25964 62.54470 56.06016 62.54470 NA
[10,] 26034 64.88341 55.74644 64.88341 NA
[11,] 28111 67.25120 55.81720 67.25120 NA
[12,] 28141 69.22237 55.54264 69.22237 NA
[13,] 26373 70.68963 54.46242 70.68963 NA
[14,] 24615 72.20682 50.81890 72.20682 NA
[15,] 26564 73.71524 50.64076 73.71524 NA
[16,] 25744 75.34195 51.75018 75.34195 NA
[17,] 26169 76.46221 50.24811 76.46221 NA
[18,] 28327 77.37070 49.02389 77.37070 NA
[19,] 28511 77.64845 49.17672 77.64845 NA
[20,] 24763 78.83179 48.20985 78.83179 NA
[21,] 24635 80.80679 49.03256 80.80679 NA
[22,] 26483 82.18598 50.64192 82.18598 NA
[23,] 25535 83.17191 52.70286 83.17191 NA
[24,] 25983 84.95746 53.26376 84.95746 NA
[25,] 29986 87.45263 57.50246 87.45263 NA
[26,] 37549 90.57314 66.43959 90.57314 NA
[27,] 44497 93.47729 71.23184 93.47729 NA
[28,] 48185 96.06590 74.85468 96.06590 NA
[29,] 56937 99.08321 88.50022 99.08321 NA
[30,] 55827 98.25567 93.07073 98.25567 NA
[31,] 59100 100.00000 100.00000 100.00000 NA
[32,] 71537 102.85797 109.18799 102.85797 NA
[33,] 68142 104.57031 108.66621 104.57031 NA
[34,] 61962 105.87292 104.11996 105.87292 NA
[35,] 61266 107.46275 99.98200 107.46275 NA
[36,] 51775 107.26643 97.63002 107.26643 NA
[37,] 32958 108.05543 NA 108.05543 NA
[38,] NA 109.89962 NA 109.89962 NA
[39,] NA 111.50721 NA 111.50721 NA
[40,] NA 113.60008 NA 113.60008 NA
[41,] NA 116.10783 NA 116.10783 NA
[42,] NA 118.68726 NA 118.68726 NA
[43,] NA 121.31223 NA 121.31223 NA
[44,] NA 123.97757 NA 123.97757 NA
[45,] NA 126.64159 NA 126.64159 NA
[46,] NA 129.30434 NA 129.30434 NA
[47,] NA 131.99454 NA 131.99454 NA
[48,] NA 134.74379 NA 134.74379 NA
[49,] NA 137.63494 NA 137.63494 NA
[50,] NA 140.66371 NA 140.66371 NA
[51,] NA 143.76488 NA 143.76488 NA
[52,] NA 146.95503 NA 146.95503 NA
[53,] NA 150.22311 NA 150.22311 NA
[54,] NA 153.55776 NA 153.55776 NA
[55,] NA 156.97532 NA 156.97532 NA
[56,] NA 160.46257 NA 160.46257 NA
[57,] NA 164.05430 NA 164.05430 NA
For every element in the list, I would like to compute the 5th column based on the following condition:
1. if element in first column 1 is less than or equal to 0.01 then element in column 5 is 100
2. otherwise element in column 5 is equal to column 2 * (column 3 / column 4)
this is the code I came up with and that doesnt work
fct_pgo <- function(x) {
index <- pgo_computation[[x]][,1] > 0.01 & !is.na(pgo_computation[[x]][,1])
pgo_computation <- within(pgo_computation, pgo_computation[[x]][,5][index] <- pgo_computation[[x]][,2][index]*(pgo_computation[[x]][,3][index]/pgo_computation[[x]][,4][index]))
index1 <- pgo_computation[[x]][,1] <= 0.01 & !is.na(pgo_computation[[x]][,1])
pgo_computation <- within(pgo_computation, pgo_computation[[x]][,5][index] <- 100)
}
lapply(1:length(pgo_computation),fct_pgo)
Thanks a lot in advance for your help!
Simple solution using good old ifelse
M[, 5] <- ifelse(M[, 1] <= 0.01,
100,
M[, 2] * M[, 3] / M[, 4])
Based on PoGibas answer, this is the finalized code:
fct_pgo <- function(x) {
pgo_computation[[x]][,5] <- ifelse(pgo_computation[[x]][,1] <=0.01,100,pgo_computation[[x]][,2]*(pgo_computation[[x]][,3]/pgo_computation[[x]][,4]))
}
##COMPUTE PGO SERIES
pgo_computation<-lapply(1:length(pgo_computation),fct_pgo)

error in storing unique values in 2d vector in r

> uc<-unique(r1$COMPANY)
> uc
[1] AZTEC CALIBER POINT COGNIZANT CYBAGE CYBAGE DLF
[7] GODREJ AND BOYCE LTD. HCL TECHNOLOGIES I-FLEX INFOCEPTS INFOSYS JATAAYU SOFTWARE (P) LTD.
[13] KANBAY KPIT L & T LTD. L & T INFOTECH MASTEK mBlazon SOLUTION PVT. LTD.
[19] MOTOR INDUSTRIES LTD NOVATECH PATNI COMPUTER SOFTWARE RF ARRAYS S.M. WIRELESS PVT. LTD. SATYAM COMPUTERS
[25] SATYAM COMPUTERS SATYAM COMPUTERS LTD. SHOBHA DEVELOPERS SOHAM's FOUNDTION ENGG. SYNTEL LTD. TCS
[31] TECH MAHINDRA LTD. ULTRA TECH CEMENT VRITTI SOLUTIONS ABO SOFTWARE ARTEFACT PROJECTS LTD. EATON
[37] FORCE MOTORS H.C.C. HEXAWARE TECHNOLOGIES HJB GROUP COMPANY, OMAN IBM DAKSH INDIAN MILITARY ACADEMY
[43] INDO RAMA SYNTHETICS INFOSPECTRUM PVT. LTD. JYOTI STRUCTUIRES LTD. KALPATARU KONE ELEVATORS L & T ( e- SOLUTIONS)
[49] LAMBENT MAHINDRA & MAHINDRA LTD. MAYTAS INFRA PVT. LTD. MOTOR INDUSTRIES LTD . ORIENT CEMENT PERSISTENT SYSTEMS PVT.LTD
[55] PREMIERE TECHNMOLOGY SCHNEIDER SETH CONSTRUCTION SIEMENS SIMPLEX SMS PARYAWARAN
[61] SOFT LINK INTERNATIONAL VARROC ENGINEERING, PUNE
> f<-length(uc)
> tt<-mat.or.vec(length(uc),3)
> for(n in 1:f)
+ {
+ tt[n,1]=uc[n]
+ tt[n,2]=5
+ tt[n,3]=9
+ }
> tt
[,1] [,2] [,3]
[1,] 3 5 9
[2,] 4 5 9
[3,] 5 5 9
[4,] 6 5 9
[5,] 7 5 9
[6,] 8 5 9
[7,] 11 5 9
[8,] 13 5 9
[9,] 16 5 9
[10,] 20 5 9
[11,] 22 5 9
[12,] 23 5 9
[13,] 26 5 9
[14,] 28 5 9
[15,] 29 5 9
[16,] 31 5 9
[17,] 34 5 9
[18,] 36 5 9
[19,] 37 5 9
[20,] 39 5 9
[21,] 41 5 9
[22,] 44 5 9
[23,] 45 5 9
[24,] 46 5 9
[25,] 47 5 9
[26,] 48 5 9
[27,] 51 5 9
[28,] 56 5 9
[29,] 57 5 9
[30,] 58 5 9
[31,] 59 5 9
[32,] 60 5 9
[33,] 62 5 9
[34,] 1 5 9
[35,] 2 5 9
[36,] 9 5 9
[37,] 10 5 9
[38,] 12 5 9
[39,] 14 5 9
[40,] 15 5 9
[41,] 17 5 9
[42,] 18 5 9
[43,] 19 5 9
[44,] 21 5 9
[45,] 24 5 9
[46,] 25 5 9
[47,] 27 5 9
[48,] 30 5 9
[49,] 32 5 9
[50,] 33 5 9
[51,] 35 5 9
[52,] 38 5 9
[53,] 40 5 9
[54,] 42 5 9
[55,] 43 5 9
[56,] 49 5 9
[57,] 50 5 9
[58,] 52 5 9
[59,] 53 5 9
[60,] 54 5 9
[61,] 55 5 9
[62,] 61 5 9
> strsplit(r1$COMPANY," ")
Error in strsplit(r1$COMPANY, " ") : non-character argument
I want t[n,1] to store all unique values of r1$COMPANY present in vector uc but it shows some random numbers.Please help to resolve the error.Also I would like to know how to obtain just first word from r1$COMPANY. I tried to split it on space character but it shows error.
As #Jason and #Metrics mentioned, it appears that uc is a factor rather than a character. To remedy this, define uc as follows:
uc <- with(r1, as.character(unique(COMPANY)))
The key here is as.character(), which will convert a factor variable to a character variable. Any string manipulation functions should now work on uc.
# I think `uc` is factor in your case (check using str(uc)). If it is character, it will give the solution as expected. Consider the following example:
uc<-names(mtcars)
#str(uc)
#chr [1:11] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
f<-length(uc)
tt<-mat.or.vec(f,3)
for(n in 1:f) {
tt[n,1]<-uc[n]
tt[n,2]<-5
tt[n,3]<-9
}
> tt
tt
[,1] [,2] [,3]
[1,] "mpg" "5" "9"
[2,] "cyl" "5" "9"
[3,] "disp" "5" "9"
[4,] "hp" "5" "9"
[5,] "drat" "5" "9"
[6,] "wt" "5" "9"
[7,] "qsec" "5" "9"
[8,] "vs" "5" "9"
[9,] "am" "5" "9"
[10,] "gear" "5" "9"
[11,] "carb" "5" "9"

Principal component analysis (princomp, principal, etc.) on a 3D array

I have used PCA on 2D arrays before, and I use the first PC score vector that best best describes the variance of all the other columns in analyses. Below is a R example that shows the Comp.1 vector that would best describe the variance of the 2D array of interest.
data <- array(data=sample(12), c(4,3))
data
[,1] [,2] [,3]
[1,] 11 2 12
[2,] 4 3 10
[3,] 8 7 1
[4,] 6 9 5
output=princomp(data)
output$scores
Comp.1 Comp.2 Comp.3
[1,] 6.422813 2.865390 0.4025040
[2,] 3.251842 -3.617633 -0.9814571
[3,] -5.856500 1.848419 -1.3819379
[4,] -3.818155 -1.096176 1.9608909
My question is how can I do this same procedure on a 3D array? For example, if I have an array that the size is 4 x 5 x 3 how could I get the 4 x 5 2D array that is equivalent to the Comp.1 vector found above?
I have provided an R example below with code and outputs. When I look at the scores it only outputs one component (not 3 as expected), and the length is 60. Does that mean that the first 20 elements correspond to the first PC, the next 20 to the 2nd PC, and the last 20 to the 3rd PC? If so how does princomp arrange the entries, so I can get back to the original 4 x 5 2D array using the first 20 elements (1st PC)? Thank you for your assistance.
data=array(data=sample(48), c(4,5,3))
data
, , 1
[,1] [,2] [,3] [,4] [,5]
[1,] 47 21 45 41 34
[2,] 1 16 32 31 37
[3,] 39 8 35 10 6
[4,] 48 14 25 3 11
, , 2
[,1] [,2] [,3] [,4] [,5]
[1,] 12 43 15 36 23
[2,] 17 4 7 26 46
[3,] 2 13 33 20 40
[4,] 18 19 28 44 38
, , 3
[,1] [,2] [,3] [,4] [,5]
[1,] 42 24 47 21 45
[2,] 5 22 1 16 32
[3,] 30 29 39 8 35
[4,] 27 9 48 14 25
output=princomp(data)
output$scores
Comp.1
[1,] 21.8833333
[2,] -24.1166667
[3,] 13.8833333
[4,] 22.8833333
[5,] -4.1166667
[6,] -9.1166667
[7,] -17.1166667
[8,] -11.1166667
[9,] 19.8833333
[10,] 6.8833333
[11,] 9.8833333
[12,] -0.1166667
[13,] 15.8833333
[14,] 5.8833333
[15,] -15.1166667
[16,] -22.1166667
[17,] 8.8833333
[18,] 11.8833333
[19,] -19.1166667
[20,] -14.1166667
[21,] -13.1166667
[22,] -8.1166667
[23,] -23.1166667
[24,] -7.1166667
[25,] 17.8833333
[26,] -21.1166667
[27,] -12.1166667
[28,] -6.1166667
[29,] -10.1166667
[30,] -18.1166667
[31,] 7.8833333
[32,] 2.8833333
[33,] 10.8833333
[34,] 0.8833333
[35,] -5.1166667
[36,] 18.8833333
[37,] -2.1166667
[38,] 20.8833333
[39,] 14.8833333
[40,] 12.8833333
[41,] 16.8833333
[42,] -20.1166667
[43,] 4.8833333
[44,] 1.8833333
[45,] -1.1166667
[46,] -3.1166667
[47,] 3.8833333
[48,] -16.1166667
[49,] 21.8833333
[50,] -24.1166667
[51,] 13.8833333
[52,] 22.8833333
[53,] -4.1166667
[54,] -9.1166667
[55,] -17.1166667
[56,] -11.1166667
[57,] 19.8833333
[58,] 6.8833333
[59,] 9.8833333
[60,] -0.1166667

Displaying 3D using Wireframe in R

I am trying to plot 3D graphs in R using Wireframe, but I have problem in displaying the graph correctly. The data is the following:
[1,] 1 1.000000 1
[2,] 2 1.709133 1
[3,] 4 3.278188 1
[4,] 8 5.082078 1
[5,] 16 5.753403 1
[6,] 32 5.778228 1
[7,] 64 5.783567 1
[8,] 1 1.000000 2
[9,] 2 1.709133 2
[10,] 4 3.278429 2
[11,] 8 5.081508 2
[12,] 16 5.751819 2
[13,] 32 5.777714 2
[14,] 64 5.783520 2
[15,] 1 1.000000 3
[16,] 2 1.709133 3
[17,] 4 3.278632 3
[18,] 8 5.079604 3
[19,] 16 5.753117 3
[20,] 32 5.777558 3
[21,] 64 5.783742 3
[22,] 1 1.000000 4
[23,] 2 1.709133 4
[24,] 4 3.278708 4
[25,] 8 5.080512 4
[26,] 16 5.753243 4
[27,] 32 5.778988 4
[28,] 64 5.782796 4
[29,] 1 1.000000 5
[30,] 2 1.709133 5
[31,] 4 3.278253 5
[32,] 8 5.082100 5
[33,] 16 5.752612 5
[34,] 32 5.778187 5
[35,] 64 5.783359 5
[36,] 1 1.000000 6
[37,] 2 1.709133 6
[38,] 4 3.278576 6
[39,] 8 5.078772 6
[40,] 16 5.753112 6
[41,] 32 5.777878 6
[42,] 64 5.784069 6
[43,] 1 1.000000 7
[44,] 2 1.709133 7
[45,] 4 3.277898 7
[46,] 8 5.081783 7
[47,] 16 5.753860 7
[48,] 32 5.777794 7
[49,] 64 5.784079 7
[50,] 1 1.000000 8
[51,] 2 1.709133 8
[52,] 4 3.278517 8
[53,] 8 5.080553 8
[54,] 16 5.750771 8
[55,] 32 5.779782 8
[56,] 64 5.783110 8
[57,] 1 1.000000 9
[58,] 2 1.709133 9
[59,] 4 3.278196 9
[60,] 8 5.080629 9
[61,] 16 5.753407 9
[62,] 32 5.777428 9
[63,] 64 5.784100 9
[64,] 1 1.000000 10
[65,] 2 1.709133 10
[66,] 4 3.278395 10
[67,] 8 5.081113 10
[68,] 16 5.752613 10
[69,] 32 5.777564 10
[70,] 64 5.783312 10
I tried the following code:
wireframe(temp, scales = list(arrows = FALSE,
x = list(labels = 2^seq(0, 6)),
y = list(labels = seq(1,7)),
z = list (labels =seq(1,7))), drape = TRUE, colorkey = TRUE,
screen = list(z = 30, x = -60),
xlab = "X", ylab = "Y", zlab = "Z")
I don't know why the graph is displayed like that:
If I tried to display the same code for the first 7 rows only the figure is like that:
Anyone knows what's the problem?.
I think you need to use the aspect argument here.
wireframe(as.matrix(dat),
scales = list(arrows = FALSE, x = list(labels = 2^seq(0, 6)),
y = list(labels = seq(1,7)), z = list(labels =seq(1,7))),
drape = TRUE, colorkey = TRUE, aspect = c(61/87, 0.4),
screen = list(z = 30, x = -60), xlab = "X", ylab = "Y", zlab = "Z")

Resources