Skip to contents

Computes percentiles (quantiles) for selected numeric columns. By default, six bottom percentiles (0th to 0.5th) and six top percentiles (99.5th to 100th) are calculated. The function supports grouping.

Usage

percdata(data, cols = NULL, group = NULL, diff = 0.1,
        part = "both", na.rm = TRUE, verbose = FALSE)

Arguments

data

A data frame, matrix, or numeric vector. If a vector, a data frame is created internally.

cols

Column indices or names of numeric variables. If NULL, all numeric columns are used.

group

Optional grouping column index or name. If provided, percentiles are computed separately for each group.

diff

Common difference between quantile probabilities. Default is 0.1.

part

Which parts to return: "both" (default), "bottom", or "top".

na.rm

Logical; if TRUE, NA values are removed before quantile computation.

verbose

Logical; if TRUE, prints timing message.

Details

The function uses a C++ quantile implementation to speed up calculations. For grouped data, percentiles are computed within each group.

Value

A data frame with rows corresponding to percentiles and columns corresponding to variables (plus a percentile column). If grouped, an additional grouping column is present.

References

1. Example data is from https://smear.avaa.csc.fi/download. It includes particle number concentrations in SMEAR I Varrio forest.

Author

Chun-Sheng Liang <chun-shengliang@qq.com>

Examples

percdata(data, cols = 27:61, group = 4)
#>       monthyear percentile         12.6         14.1         15.8         17.8
#> 1  January 2020        0th    0.5813700    0.1296700 1.947100e-01     0.423960
#> 2  January 2020      0.1th    0.9731696    0.3773019 5.137114e-01     1.399173
#> 3  January 2020      0.2th    1.0735254    0.3842359 1.142671e+00     2.517086
#> 4  January 2020      0.3th    1.1556193    0.3919955 1.544461e+00     2.660680
#> 5  January 2020      0.4th    1.2598244    0.3935166 1.648747e+00     3.002321
#> 6  January 2020      0.5th    1.3013175    0.3986762 1.810594e+00     3.239028
#> 7  January 2020     99.5th 2602.9445000 2923.4314500 3.808212e+03  4075.675600
#> 8  January 2020     99.6th 3073.6192400 3477.6802800 4.270320e+03  4449.078800
#> 9  January 2020     99.7th 3944.8377000 4196.9670000 4.483078e+03  5028.609800
#> 10 January 2020     99.8th 4409.5662800 5052.9833800 4.811013e+03  5363.089920
#> 11 January 2020     99.9th 4781.0301100 5305.0396600 5.002688e+03  5626.651640
#> 12 January 2020      100th 5503.3500000 6160.9600000 6.004740e+03  5831.840000
#> 13    July 2020        0th   11.8262000    2.0475000 6.750700e+00     3.293100
#> 14    July 2020      0.1th   12.9684379    2.4309251 6.922704e+00     4.508544
#> 15    July 2020      0.2th   13.2952200    2.5321232 6.985029e+00     5.886904
#> 16    July 2020      0.3th   13.4089108    2.5403976 7.054564e+00     6.322416
#> 17    July 2020      0.4th   13.5705744    2.5721388 7.098881e+00     6.477312
#> 18    July 2020      0.5th   13.6640490    2.5922625 7.129718e+00     6.552560
#> 19    July 2020     99.5th 2105.3725500 2245.0300500 2.349545e+03  2885.952000
#> 20    July 2020     99.6th 2508.6637600 2613.7980800 2.506400e+03  2921.647200
#> 21    July 2020     99.7th 2882.3459300 3190.0156400 2.878494e+03  3108.658400
#> 22    July 2020     99.8th 3098.2619800 3984.7380000 3.968058e+03  4132.166800
#> 23    July 2020     99.9th 3929.7734300 4863.7178800 5.810608e+03  5338.781600
#> 24    July 2020      100th 5249.1600000 8045.6300000 1.349270e+04 14810.800000
#>              20         22.4         25.1         28.2         31.6
#> 1      0.579750 6.033400e-01 3.115900e+00 6.319500e-01     1.274100
#> 2      3.058728 1.813931e+00 3.779186e+00 3.580320e+00     2.671941
#> 3      3.078039 2.247938e+00 4.451682e+00 4.020349e+00     4.598199
#> 4      3.088272 2.506228e+00 4.700876e+00 5.086797e+00     5.783468
#> 5      3.094701 2.997551e+00 5.184092e+00 5.810790e+00     6.656138
#> 6      3.251417 3.165008e+00 5.412850e+00 6.578815e+00     7.576954
#> 7   4000.517650 3.820634e+03 3.860975e+03 4.159987e+03  4242.707650
#> 8   4532.370880 4.530844e+03 4.629081e+03 4.311479e+03  4636.971880
#> 9   5189.591490 5.008937e+03 5.019287e+03 5.015318e+03  4863.369950
#> 10  5627.388040 5.713701e+03 5.154568e+03 5.551622e+03  5285.256560
#> 11  5996.901580 5.914698e+03 5.677392e+03 5.818364e+03  5479.359390
#> 12  6826.330000 6.585170e+03 6.023560e+03 6.212310e+03  5794.990000
#> 13     1.265700 2.162600e-03 6.796100e-03 6.789900e-04     0.381370
#> 14     1.365212 1.439530e-01 5.494728e-01 5.508735e-02     2.331466
#> 15     1.382112 2.962380e-01 8.115385e-01 1.267413e-01     3.141514
#> 16     1.388744 4.092315e-01 9.851681e-01 2.374430e-01     5.338883
#> 17     1.453000 4.791020e-01 1.160726e+00 2.811562e-01     6.804090
#> 18     1.587520 5.257850e-01 1.339875e+00 3.520424e-01     7.254684
#> 19  3788.796000 5.482588e+03 7.228805e+03 9.671218e+03 12147.576000
#> 20  3850.924800 5.569278e+03 7.499327e+03 1.017185e+04 14007.512800
#> 21  4026.228800 5.688722e+03 7.831517e+03 1.059906e+04 14473.524000
#> 22  4266.706400 6.090214e+03 8.229373e+03 1.227316e+04 17856.259200
#> 23  4849.946000 6.601651e+03 9.007562e+03 1.357279e+04 19510.019200
#> 24 13567.700000 1.017220e+04 1.040710e+04 1.550730e+04 21331.900000
#>            35.5         39.8         44.7        50.1        56.2        63.1
#> 1      0.773380 2.175000e-01 4.183800e-01    0.584570    0.615760    1.218700
#> 2      1.840458 9.404501e-01 9.770996e-01    1.186090    2.639751    2.477069
#> 3      3.288960 2.249167e+00 1.823927e+00    1.854557    3.088332    2.981252
#> 4      4.095020 2.443529e+00 2.118904e+00    2.915105    3.415719    3.623538
#> 5      4.893961 2.769498e+00 2.216544e+00    3.533780    3.793792    4.324422
#> 6      5.669837 2.988392e+00 2.435246e+00    4.033750    4.281912    4.693600
#> 7   4302.267400 4.122704e+03 3.411845e+03 2435.662800 1742.270450 1295.378000
#> 8   4388.303920 4.269978e+03 3.452919e+03 2526.077360 1795.814840 1304.987760
#> 9   4614.581300 4.361522e+03 3.653293e+03 2698.585520 1821.374720 1331.182440
#> 10  4815.526900 4.437877e+03 3.739438e+03 2727.046560 1878.022960 1370.103680
#> 11  5079.883980 4.582301e+03 3.917464e+03 2765.400400 1971.935610 1417.817480
#> 12  5200.210000 4.846260e+03 4.223170e+03 2938.220000 2024.210000 1860.370000
#> 13     4.563900 9.160500e+00 4.885800e+00    1.675500    2.747200    2.172500
#> 14     7.739820 1.482423e+01 7.717584e+00    8.127478    5.313649    6.296639
#> 15    10.518474 1.776507e+01 1.128661e+01   18.484437    8.346424    7.713156
#> 16    11.349135 1.925168e+01 1.696655e+01   23.204950   12.585923    9.647326
#> 17    12.716060 2.138451e+01 1.965083e+01   29.466764   15.035204   10.970846
#> 18    13.985473 2.316073e+01 2.203605e+01   36.744743   19.543855   11.545495
#> 19 13292.430000 1.193698e+04 8.734542e+03 7008.374750 6718.545500 6446.066750
#> 20 15767.704000 1.434301e+04 9.122119e+03 7054.060000 6877.007800 6571.815400
#> 21 17272.018500 1.654432e+04 9.271326e+03 7344.534050 7048.194000 6707.778000
#> 22 19960.530000 1.793911e+04 9.930308e+03 7741.280900 7114.613300 6840.519300
#> 23 21873.128500 1.897688e+04 1.064831e+04 7932.517500 7403.074750 7425.083000
#> 24 22913.800000 2.010650e+04 1.155670e+04 8827.150000 8190.760000 7693.960000
#>            70.8        79.4        89.1         100          112         126
#> 1     0.3366100    1.150900    0.390550    0.312650    0.0317640    1.411000
#> 2     0.4673202    1.946156    3.053302    4.626649    0.3957791    2.602403
#> 3     0.7324589    3.286164    4.472222    5.226190    1.1789512    3.365427
#> 4     1.1060440    3.647060    5.178674    5.892025    2.2934672    4.295703
#> 5     1.5405040    3.987097    5.913300    6.393432    3.5735864    5.507584
#> 6     2.6438000    4.265163    6.690819    7.338741    3.9658860    6.281224
#> 7  1046.0318000  925.535770  819.292555  726.744285  803.3186800  869.060360
#> 8  1060.8668800  937.343104  824.837216  731.152588  821.3063280  880.257920
#> 9  1079.2521200  946.954593  838.649848  762.867512  840.0942520  920.579500
#> 10 1102.3267200  990.295770  875.410516  779.262952  890.5833680  940.657792
#> 11 1171.1169600 1007.481050  903.757538  818.333915  929.5906120  981.289272
#> 12 1754.6300000 1554.980000 1359.670000 1176.040000  997.4410000 1021.980000
#> 13    1.6070000    1.926700    3.144600    2.555700    0.2276800    1.436200
#> 14    5.5990280    3.859487    7.808844    8.787831    7.2553945   14.923652
#> 15    7.4463670    7.164048    9.272181   10.665525   11.5729220   17.919325
#> 16    8.2414545    9.569272   10.897194   13.167952   16.6854225   23.005380
#> 17    9.1168860   10.953648   14.581898   16.308518   20.1472080   25.562138
#> 18   10.4619100   12.741363   15.976550   18.882040   21.1072900   28.673793
#> 19 6474.9500000 6070.699750 5039.361000 3895.763750 3060.9150000 2832.003500
#> 20 6498.3438000 6126.601400 5443.494000 4326.653800 3150.5448000 2922.692600
#> 21 6581.8089000 6170.346900 5666.271150 4568.493500 3401.1222000 3090.332500
#> 22 6761.3825000 6290.642500 5846.041600 4704.728300 3562.9050000 3199.925900
#> 23 6883.0867500 6479.954050 5968.483600 5134.971900 3782.3650000 3422.721100
#> 24 7530.5100000 6992.510000 6243.540000 5641.850000 4357.3300000 3781.660000
#>            141         158          178          200          224          251
#> 1     0.022187    0.029489    0.0248690    0.2897900    0.0891970    0.0014289
#> 2     2.131336    1.358327    0.3637610    0.5829763    0.3921255    0.3581667
#> 3     2.454045    1.966266    0.7680199    0.7738402    0.6634913    0.4358510
#> 4     3.147785    2.026963    0.9808828    0.8009678    0.9406741    0.5016253
#> 5     3.559512    2.401870    1.3191248    0.9676897    1.0384544    0.5771078
#> 6     4.122164    3.171744    1.7835700    1.1925190    1.3361975    0.6156468
#> 7   779.542000  652.207720  553.0181500  436.3782100  392.0030800  346.9456000
#> 8   801.133328  658.857216  559.4480680  450.4677440  406.7928200  360.9487760
#> 9   815.965716  675.672524  571.0672940  457.1209170  411.9981240  369.5710240
#> 10  855.612528  689.128160  593.5091900  480.2417440  414.9448380  378.5100320
#> 11  863.193196  706.280100  618.0909530  517.9546250  422.4211650  390.5838520
#> 12  908.977000  794.017000  696.1690000  581.9040000  448.8350000  404.1060000
#> 13   14.653100   18.182900    9.6912000   15.8179000   20.0722000   24.1496000
#> 14   19.169241   22.906707   27.9056260   25.4923735   29.6621510   26.3634405
#> 15   23.494429   28.286943   32.9458360   33.4341400   37.6391900   28.4802190
#> 16   25.676747   31.936276   35.8519080   35.5647385   41.1718680   30.3734060
#> 17   28.933668   33.520122   39.0399120   38.7020200   44.3862120   31.4313920
#> 18   33.283987   37.394618   42.6984100   42.5349800   46.0901800   32.9821900
#> 19 2940.098250 2838.088250 2637.6720000 2458.3922500 2132.7910000 1767.0797500
#> 20 3006.796600 2860.716800 2681.4496000 2467.7806000 2143.1688000 1815.2880000
#> 21 3043.724800 2912.755900 2793.9815500 2502.8626000 2181.4836000 1863.0197000
#> 22 3053.346700 2953.397900 2870.7367000 2547.5317000 2225.5923000 1907.3715000
#> 23 3103.473850 3005.560600 2935.3779500 2613.7576500 2332.7168500 1990.0895500
#> 24 3196.010000 3106.360000 3164.9600000 2745.0300000 2524.2100000 2139.0500000
#>             282          316          355          398          447
#> 1  3.215000e-04 4.639700e-04 6.957900e-04 6.367000e-04 4.081000e-04
#> 2  5.543267e-02 4.816278e-02 2.436725e-03 1.660539e-03 1.026913e-03
#> 3  9.314427e-02 9.726495e-02 1.154537e-02 2.100684e-03 1.222799e-03
#> 4  1.242976e-01 1.134549e-01 1.181049e-01 2.912802e-03 1.632752e-03
#> 5  1.338150e-01 1.188675e-01 2.281830e-01 4.589069e-03 2.205715e-03
#> 6  1.345529e-01 1.217980e-01 2.570013e-01 6.617482e-03 2.973534e-03
#> 7  3.196885e+02 2.855157e+02 2.204344e+02 1.610387e+02 1.075239e+02
#> 8  3.369965e+02 3.016844e+02 2.370329e+02 1.673598e+02 1.100714e+02
#> 9  3.491127e+02 3.190609e+02 2.472201e+02 1.794253e+02 1.137951e+02
#> 10 3.798925e+02 3.276457e+02 2.757663e+02 1.985853e+02 1.192607e+02
#> 11 3.963814e+02 3.488295e+02 3.009558e+02 2.205020e+02 1.311714e+02
#> 12 4.136020e+02 4.145390e+02 7.921210e+02 7.681630e+02 4.520760e+02
#> 13 6.175300e+00 4.474400e-01 2.475500e-01 4.144700e-02 1.523400e-02
#> 14 1.029674e+01 3.077696e+00 1.529187e+00 1.379266e-01 9.182338e-02
#> 15 1.163456e+01 3.303168e+00 2.678282e+00 3.884310e-01 1.450236e-01
#> 16 1.336715e+01 4.951789e+00 2.903159e+00 4.800226e-01 1.730694e-01
#> 17 1.402185e+01 5.356438e+00 3.015076e+00 5.272132e-01 1.996771e-01
#> 18 1.463693e+01 6.012842e+00 3.227368e+00 6.193335e-01 2.129372e-01
#> 19 1.414091e+03 9.619770e+02 5.757286e+02 3.160433e+02 2.023246e+02
#> 20 1.433331e+03 1.006118e+03 6.175976e+02 3.388016e+02 2.286422e+02
#> 21 1.468115e+03 1.065908e+03 6.511564e+02 3.491350e+02 2.532955e+02
#> 22 1.516621e+03 1.104809e+03 6.796675e+02 3.724134e+02 2.644968e+02
#> 23 1.564348e+03 1.160124e+03 7.444857e+02 4.013239e+02 2.758664e+02
#> 24 1.796820e+03 1.349350e+03 8.669500e+02 4.758690e+02 3.025940e+02
#>             501          562          631
#> 1  1.212900e-04 3.504400e-04 2.724100e-04
#> 2  3.247081e-04 1.326887e-03 8.432254e-04
#> 3  5.909444e-04 1.825000e-03 1.403712e-03
#> 4  8.719852e-04 2.073663e-03 1.757311e-03
#> 5  1.225759e-03 2.250000e-03 2.148654e-03
#> 6  4.443800e-03 2.751588e-03 2.300956e-03
#> 7  6.408854e+01 4.102454e+01 2.821622e+01
#> 8  6.503528e+01 4.132040e+01 2.845588e+01
#> 9  6.599762e+01 4.286420e+01 3.002081e+01
#> 10 6.733364e+01 4.540665e+01 3.244202e+01
#> 11 7.212599e+01 5.085860e+01 3.636245e+01
#> 12 8.207840e+01 6.711610e+01 5.420330e+01
#> 13 1.030200e-04 7.869100e-03 1.562500e-04
#> 14 5.653414e-04 1.358419e-02 4.787944e-04
#> 15 1.167061e-03 2.498333e-02 1.683144e-03
#> 16 1.405114e-03 3.744886e-02 2.441593e-03
#> 17 1.521186e-03 4.854680e-02 2.730011e-03
#> 18 1.730404e-03 6.192618e-02 4.007674e-03
#> 19 1.134501e+02 6.103744e+01 3.200716e+01
#> 20 1.378699e+02 7.090755e+01 3.888133e+01
#> 21 1.652772e+02 9.731800e+01 5.114516e+01
#> 22 1.963119e+02 1.142907e+02 5.413694e+01
#> 23 2.368159e+02 1.286613e+02 6.007606e+01
#> 24 2.831720e+02 1.683340e+02 7.820520e+01