Related
I calculate the slope in a data frame but I have a problem returning the original value at different area sizes. my data frame in dput format is below.
My current approach is to do this:
coefLM <- function(x) {
coef(lm(log(mean) ~ log(area), tar.un_sap.10[-1,]))[2]
}
And this code gives the following problem:
tar.un_sap.10$slope=apply(tar.un_sap.10[,1:n],1,coefLM)
> head(tar.un_sap.10$slope)
[1] 0.02201471 0.02201471 0.02201471 0.02201471 0.02201471 0.02201471
Here is my data frame:
> dput(tar.un_sap.10)
structure(list(X1 = c(0, 209, 249, 127, 275, 204, 254, 121, 303,
275, 231, 200, 293, 261, 196, 287, 212, 261, 300, 260, 249, 297,
297, 270, 297, 248, 260, 262, 279, 288, 233, 232, 229, 252, 271,
264, 260, 257, 255, 246, 265, 252, 259, 251, 258, 255, 254, 256,
254, 320), X2 = c(0, 267, 266, 100, 300, 219, 300, 202, 114, 284,
264, 247, 271, 249, 287, 290, 244, 268, 231, 264, 282, 222, 276,
282, 297, 285, 246, 290, 262, 280, 233, 243, 238, 266, 271, 263,
267, 258, 264, 249, 258, 260, 260, 259, 259, 254, 256, 254, 254,
320), X3 = c(0, 179, 300, 278, 232, 224, 57, 268, 289, 264, 291,
288, 178, 289, 187, 258, 287, 241, 259, 268, 242, 265, 260, 268,
280, 277, 278, 249, 277, 251, 238, 242, 234, 268, 265, 280, 267,
277, 273, 246, 266, 252, 256, 259, 263, 254, 254, 256, 254, 320
), X4 = c(0, 250, 117, 186, 283, 284, 280, 205, 281, 260, 285,
243, 294, 214, 246, 252, 193, 231, 296, 300, 279, 264, 289, 262,
265, 270, 283, 225, 278, 265, 285, 262, 272, 277, 265, 264, 280,
259, 270, 271, 265, 262, 252, 260, 259, 254, 255, 257, 254, 320
), X5 = c(0, 190, 285, 201, 275, 136, 255, 159, 245, 281, 223,
231, 297, 267, 211, 300, 262, 299, 221, 286, 297, 275, 252, 262,
283, 267, 255, 248, 276, 223, 267, 242, 247, 242, 266, 282, 267,
276, 274, 267, 258, 261, 261, 300, 260, 256, 255, 258, 253, 320
), X7 = c(0, 292, 51, 208, 263, 270, 180, 266, 270, 296, 188,
295, 125, 223, 287, 237, 299, 223, 242, 268, 281, 240, 288, 297,
265, 247, 229, 251, 241, 271, 266, 241, 240, 266, 281, 280, 260,
251, 249, 246, 258, 259, 260, 262, 260, 254, 254, 256, 254, 320
), X8 = c(0, 280, 280, 100, 285, 220, 293, 277, 298, 305, 298,
292, 269, 255, 223, 259, 296, 248, 277, 265, 297, 288, 259, 291,
259, 255, 234, 292, 283, 279, 215, 272, 277, 266, 248, 274, 276,
263, 249, 270, 251, 246, 253, 259, 258, 255, 257, 256, 254, 320
), X9 = c(0, 249, 290, 143, 252, 116, 217, 291, 280, 255, 188,
273, 240, 254, 253, 280, 282, 285, 282, 249, 286, 252, 260, 234,
239, 273, 269, 281, 235, 261, 250, 247, 265, 246, 273, 280, 257,
267, 264, 273, 258, 232, 260, 259, 262, 254, 254, 254, 255, 320
), X10 = c(0, 307, 73, 19, 303, 174, 164, 237, 244, 247, 249,
286, 188, 301, 210, 295, 281, 268, 230, 281, 274, 245, 257, 248,
258, 267, 278, 263, 260, 262, 229, 281, 227, 265, 266, 251, 276,
276, 247, 271, 262, 262, 300, 262, 260, 255, 256, 258, 254, 320
), X11 = c(0, 53, 170, 278, 233, 269, 219, 249, 298, 259, 283,
303, 182, 255, 243, 282, 282, 232, 282, 221, 282, 280, 279, 297,
283, 279, 282, 240, 248, 277, 235, 250, 248, 259, 281, 276, 261,
272, 269, 246, 239, 241, 253, 249, 260, 255, 254, 256, 254, 320
), X12 = c(0, 223, 295, 210, 164, 269, 268, 286, 226, 307, 293,
211, 195, 240, 264, 243, 249, 232, 206, 252, 241, 242, 250, 269,
260, 280, 281, 233, 262, 246, 248, 265, 280, 247, 258, 276, 254,
251, 255, 247, 260, 260, 260, 251, 259, 254, 254, 257, 255, 320
), X14 = c(0, 300, 295, 273, 308, 290, 263, 196, 261, 213, 302,
243, 281, 298, 273, 241, 300, 291, 281, 261, 228, 196, 279, 278,
278, 235, 234, 265, 274, 269, 241, 277, 247, 248, 277, 276, 267,
272, 248, 274, 239, 246, 250, 256, 259, 254, 256, 257, 254, 320
), X15 = c(0, 235, 259, 70, 303, 295, 82, 280, 101, 293, 286,
278, 291, 302, 276, 281, 281, 288, 260, 287, 252, 295, 260, 258,
219, 284, 269, 248, 260, 266, 267, 277, 238, 238, 242, 271, 280,
257, 276, 271, 258, 261, 259, 260, 259, 254, 258, 257, 254, 320
), X16 = c(0, 161, 283, 237, 178, 253, 292, 188, 228, 305, 296,
244, 210, 214, 262, 193, 283, 278, 287, 268, 235, 221, 293, 270,
289, 260, 256, 283, 259, 279, 270, 269, 283, 271, 248, 271, 266,
275, 264, 270, 258, 260, 252, 260, 260, 253, 254, 255, 254, 320
), X17 = c(0, 304, 278, 249, 186, 286, 279, 301, 288, 246, 284,
188, 254, 283, 300, 262, 242, 276, 255, 294, 282, 253, 262, 274,
273, 292, 249, 290, 274, 252, 243, 277, 234, 271, 277, 242, 276,
248, 264, 274, 268, 252, 246, 260, 258, 254, 254, 254, 257, 320
), X18 = c(0, 211, 268, 263, 226, 180, 115, 258, 308, 295, 292,
243, 258, 264, 249, 231, 298, 278, 276, 275, 269, 227, 277, 267,
298, 250, 265, 283, 222, 256, 245, 269, 242, 266, 261, 243, 269,
242, 248, 267, 264, 235, 259, 263, 261, 259, 256, 256, 255, 320
), X19 = c(0, 242, 88, 278, 263, 304, 204, 183, 277, 247, 231,
282, 195, 242, 242, 222, 256, 203, 264, 280, 263, 262, 299, 260,
250, 241, 280, 271, 206, 230, 256, 283, 243, 277, 280, 267, 274,
264, 269, 271, 250, 243, 254, 253, 261, 254, 259, 255, 255, 320
), X20 = c(0, 400, 286, 306, 284, 204, 217, 202, 226, 226, 266,
288, 239, 246, 301, 287, 277, 263, 284, 280, 299, 288, 270, 279,
259, 244, 240, 279, 280, 256, 300, 263, 281, 281, 251, 234, 267,
251, 275, 253, 265, 262, 261, 250, 259, 254, 256, 257, 253, 320
), area = c(0, 84.298625572678, 333.194502290712, 749.687630154103,
1332.77800916285, 2082.46563931695, 3000.75052061641, 4081.63265306123,
5331.1120366514, 6747.18867138692, 8329.8625572678, 10079.133694294,
11995.0020824656, 14077.4677217826, 16326.5306122449, 18742.1907538526,
21324.4481466056, 24073.302790504, 26988.7546855477, 30070.8038317368,
33319.4502290712, 36734.693877551, 40316.5347771762, 44064.9729279467,
47980.0083298626, 52061.6409829238, 56309.8708871304, 60724.6980424823,
65306.1224489796, 70054.1441066222, 74968.7630154102, 80049.9791753436,
85297.7925864223, 90712.2032486464, 96293.2111620158, 102040.816326531,
107955.018742191, 114035.818408996, 120283.215326947, 126600.209496043,
133277.800916285, 140024.989587672, 146938.775510204, 154019.158683882,
161266.139108705, 168679.716784673, 176259.891711787, 184006.663890046,
191920.03331945, 2e+05), mean = c(0, 239.95, 233.95, 202.4, 256.25,
232.1, 213.2, 227.3, 253.5, 272.9, 260.85, 257.55, 237.2, 253.25,
250.3, 255.1, 268.2, 258, 262.6, 300.95, 270.35, 252.85, 270.35,
270.55, 270.4, 262.65, 261.25, 263.75, 256.45, 261.1, 260.1,
262.6, 250, 262.15, 265.7, 265.6, 267.55, 261.65, 260.9, 260.55,
258.5, 253.15, 256.65, 257.65, 259.75, 254.5, 255.4, 265.1, 254.4,
335), slope = c(0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401,
0.0220147145695401, 0.0220147145695401, 0.0220147145695401, 0.0220147145695401
)), row.names = c(NA, -50L), class = "data.frame")
>
How can I solve this problem?
Thanks so much for your help!
I think you would first have to modify the function a bit:
coefLM <- function(x) {
coef(lm(log(mean+1) ~ log(area+1), data=x))[2]
}
You've got 0 in mean and area, so adding a start to them (or using a different transformation) will make it so you don't lose those observations. You also need to have x, the data you're passing in, be the data in the model.
To make the calculation, I would suggest sapply() which is basically a way of looping over values. You can loop over the values 1:nrow(tar.un_sap.10) and each time pass the coefLM() function the data up to that row number.
tar.un_sap.10$slope=sapply(1:nrow(tar.un_sap.10),
function(i)coefLM(tar.un_sap.10[1:i, ]))
This produces the following result:
tar.un_sap.10$slope
# [1] NA 1.2368375 1.0122426 0.8672056 0.7885012 0.7211055
# [7] 0.6636478 0.6202517 0.5881208 0.5626241 0.5382451 0.5160296
# [13] 0.4937550 0.4754918 0.4585715 0.4435312 0.4307508 0.4180439
# [19] 0.4065729 0.3964291 0.3868378 0.3766481 0.3681876 0.3601827
# [25] 0.3525755 0.3449165 0.3375712 0.3307222 0.3238242 0.3174924
# [31] 0.3109094 0.3052338 0.2992165 0.2940177 0.2891791 0.2845205
# [37] 0.2801134 0.2756314 0.2712853 0.2670833 0.2629539 0.2587712
# [43] 0.2548675 0.2511334 0.2475967 0.2439944 0.2405411 0.2372216
# [49] 0.2339506 0.2326499
I need to add missing rows from "count" based on the "numberclass" that is missing. "numberclass" is the column of the "count" dataset that should go from 1 to 652, but misses some numbers and ends at 645.
To achieve that, I made an index vector that goes from 1 to 652 called c1.
How can I use rbind to add the missing rows that are missing in "count"?
Those missing rows should contain the appropriate number in "numberclass" that is missing and a 0 on the column "sum" in the "count" data frame.
visual example
count
numberclass sum
1 1 3.45
2 2 32.45
3 3 23.11
4 5 21.33
5 6 1.54
c1
V1
1 1
2 2
3 3
4 4
5 5
6 6
finalcount
numberclass sum
1 1 3.45
2 2 32.45
3 3 23.11
4 4 0
5 5 21.33
6 6 1.54
dput(c1)
1:652
> dput(count)
structure(list(numberclass = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170,
171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
249, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368,
369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
382, 383, 384, 385, 386, 387, 388, 389, 391, 392, 393, 394, 395,
396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538,
539, 540, 541, 542, 543, 545, 546, 547, 548, 549, 550, 551, 552,
554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566,
567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592,
593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605,
606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
645, 646, 647, 648, 649, 650, 651, 652), sum = c(237.750666386555,
189.540342857143, 351.867604761905, 195.005685714286, 308.574686424686,
18.2691666666667, 85.6063492063492, 330.872041913642, 12.5832666666667,
81.3559523809524, 940.085002447968, 38.9222222222222, 67.6095238095238,
52.4340924675325, 48.9761904761905, 190.221922510823, 67.2384948051948,
106.311044372294, 50.4888222222222, 40.4883365079365, 146.992341452991,
43.6190142857143, 133.421034293119, 234.662733903319, 41.3940476190476,
27.5869769119769, 4.77619047619048, 1.14404345238095, 33.7083333333333,
44.2833333333333, 22.9526315789474, 21.5833333333333, 10.65,
2.75, 73.0113858363858, 9.41666666666667, 10.9, 30.3830128205128,
58.9269230769231, 1.39285714285714, 267.691666666667, 58.0575757575758,
48.1547008547009, 82.8479908979909, 57.6404761904762, 0.333333333333333,
15.0952380952381, 62.5674603174603, 155.280158730159, 39.9, 82.6307359307359,
24.6282467532468, 301.294040989729, 336.528306349206, 19.0833333333333,
110.152380952381, 151.278584609835, 27.3151515151515, 326.42688974359,
148.124206349206, 250.934674989716, 791.586193783953, 284.357225111163,
26.3166666666667, 689.571152020736, 211.649312496276, 143.23373015873,
104.389479365079, 1977.09488512611, 278.063024283429, 635.353051458803,
255.639689709121, 182.388611918596, 121.218055555556, 53.5880285714286,
29.8071514529915, 289.396377133977, 261.427877777778, 13.0333333333333,
120.082323232323, 26.4499333333333, 118.030555555556, 3.16666666666667,
3.5, 1.27692307692308, 1327.43098544718, 359.099526103064, 886.03077133796,
77.9476163059163, 3.7, 204.405522222222, 42.3193805944056, 83.1319512987013,
32.0430735930736, 100.999933333333, 41.4505205838606, 359.286551817072,
134.815597663857, 120.851665339892, 68.6170634920635, 120.464757456432,
98.7313991341991, 138.937179487179, 18.4913941580642, 8.9984237984238,
238.521621356421, 123.083044733045, 363.372644000444, 39.2380952380952,
3.16666666666667, 19.6226551226551, 53.5838383838384, 34.581746031746,
4.95, 131.300949206349, 445.728384935065, 109.100990092656, 364.408721825397,
61.5416666666667, 222.299498645799, 16.0214285714286, 13.5833333333333,
35.9928238095238, 522.570385291901, 92.072619047619, 451.015331590632,
276.63253968254, 61.6666666666667, 56.875, 246.15873015873, 52.5833,
73.5964119047619, 28.1214646464646, 30.1333333333333, 53.9054945054945,
206.796237085137, 111.121428571429, 182.169199264787, 59.3175971087736,
64.3332722832723, 16.9333333333333, 13.9166666666667, 23.3833333333333,
33.8173992673993, 1.50952380952381, 1.1, 47.9876584126984, 33.6666666666667,
31.7166666666667, 42.5094738594739, 193.209163059163, 36.8706349206349,
56.4786214285714, 125.781411481369, 1326.37051628773, 128.802066528312,
176.118690340834, 124.811656943091, 221.328297720058, 92.4357277483439,
5.54453781512605, 11.934710550887, 34.1893281555046, 297.559209282097,
10.45, 15.9714285714286, 0.333333333333333, 404.635647619048,
1.33333333333333, 423.917088383838, 31.725, 22.2334666666667,
126.991549902454, 46.2095071428571, 19.9333333333333, 9.41666666666667,
36.1666666666667, 101.691628950685, 88.0833333333333, 1.08333333333333,
60.5678571428571, 44.5857142857143, 10.3333333333333, 27.9333333333333,
59.6450530463688, 33.0823773448773, 15.2018740031898, 139.796428571429,
302.865200865801, 58.4464285714286, 7.50238095238095, 253.278364368964,
98.456746031746, 275.551738539239, 224.303773488182, 43.4340004939634,
14.475, 252.068551587302, 193.944014285714, 97.1103202020202,
522.762237662338, 152.027922077922, 495.599785289496, 15.45,
44.4584599224305, 2.63932178932179, 76.913480952381, 18.5944333333333,
80.5424963924964, 52.8404761904762, 19.602380952381, 21.7789854538307,
2.09285714285714, 15.6, 57.8281523809524, 114.880233333333, 2.5,
582.268982688364, 22.8928571428571, 43.5, 71.0449134199134, 13.45,
71.4832666666667, 382.793654822955, 57.6023587301587, 17.8666666666667,
134.694036507937, 8.65833333333333, 6.48333333333333, 167.456313131313,
108.970238095238, 38.0944444444444, 41.4536075036075, 644.437984476377,
64.2714285714286, 1630.6914617297, 81.8621387218045, 977.944218315018,
825.631676469739, 76.9720238095238, 161.353968253968, 70.9142857142857,
122.307142857143, 49.1575757575758, 38.9833333333333, 119.23980017316,
9.5, 7, 9.03333333333333, 0.285714285714286, 2.81558441558442,
34.3352130179203, 423.489491888615, 26.7138582972583, 20.2610666666667,
70.2504356560596, 84.3197993439266, 133.202467136288, 452.717995233655,
320.773420116725, 209.525511634406, 641.329055345934, 9.29166666666667,
20.0666666666667, 23.4825757575758, 42.336926961927, 21.5083333333333,
48.472619047619, 5.68452380952381, 3.61666666666667, 2.66666666666667,
22.6410952702853, 2596.19741576659, 3701.15679179432, 458.475674942574,
0.177777777777778, 236.511739558926, 178.846204916721, 554.69148345371,
109.069139904866, 27.9428571428571, 865.353323873349, 1315.57171181985,
4.94494734487734, 367.766031285642, 519.099162156913, 703.569199879477,
570.161782712288, 55.7592247797747, 424.061781409081, 4.14444444444444,
7.85, 1.5, 203.543559424236, 417.414520853467, 118.026934176934,
13.8930333333333, 5.3, 195.214038429218, 2, 125.901590928837,
20.183510972172, 174.23474402697, 115.783354224877, 20.9589971153889,
64.2541744390332, 30.1928142135642, 653.283386817422, 45.4998949579832,
2.28333333333333, 35.7234848484849, 13.4766233766234, 1, 1, 151.923361772117,
466.496416114588, 241.639269088134, 208.697684171547, 37.1753432142857,
32.7720180265813, 28.2666666666667, 32.9353202020202, 29.3107466063348,
52.1338661616162, 92.2408604474645, 143.825094880675, 146.094892496393,
185.56378660516, 229.435060026582, 35.8161587301587, 358.75152088854,
9.54144989396568, 100.579542891096, 48.5654928571429, 182.120363315018,
92.411123015873, 213.978268831169, 30.4477001960784, 133.023283627484,
1.48156826833297, 8.58333333333333, 4.44443333333333, 38.2468253968254,
56.047481038406, 67.3214285714286, 123.833316666667, 72.7440476190476,
4.04166666666667, 15.0999833333333, 66.4499333333333, 200.083454172494,
6.04285714285714, 160.691602741703, 6.19924242424242, 1.33333333333333,
108.082979449584, 106.752280952381, 14.5075757575758, 17.3920634920635,
131.341230952381, 44.2768897435897, 313.758134920635, 2.16666666666667,
16.6477124183007, 4.75, 23.7767065934066, 114.554377815518, 67.8246376228347,
127.12717047619, 8.01590909090909, 62.9999458874459, 24.5385558774559,
25.4267800865801, 64.9809956302521, 26.8670829004329, 144.936510045837,
18.2714285714286, 181.673313930514, 6.37619047619048, 122.4944,
163.107067798868, 62.2391525974026, 100.821861471861, 66.6090659340659,
151.295802741703, 227.115548340548, 161.469246031746, 20.8428571428571,
98.9682406349206, 84.2357142857143, 63.5107142857143, 587.042635340803,
291.116304438862, 217.717193917194, 314.73560018413, 198.123701298701,
236.697900710401, 410.192568542569, 118.817857142857, 143.350727050727,
81.387055999556, 43.8719696969697, 203.429180541681, 517.788687667888,
61.2261904761905, 382.272785934066, 75.7309523809524, 112.349503174603,
22.7539682539683, 31.7878787878788, 71.6388888888889, 116.672591197691,
31.4399816686581, 139.147260092848, 38.9365079365079, 142.327696091318,
73.9474025974026, 353.130164019063, 49.7790027560675, 247.005519209059,
98.4489704073704, 22.8163324675325, 49.0166666666667, 398.237265694185,
20.0119047619048, 127.929437229437, 29.906746031746, 11.4833333333333,
29.5477994227994, 17.2627344877345, 1, 275.39396990232, 155.285052380952,
191.24167394958, 17.5547619047619, 32.6397907647908, 48.0516145404303,
20.0202991341991, 296.087292678082, 6.05553333333333, 6.30952380952381,
550.020158730159, 398.502413950429, 697.700455175612, 342.769086313686,
100.248412698413, 578.569767384318, 323.557284593185, 578.870478870574,
799.803117448702, 66.4497474747475, 52.7964285714286, 28.2440476190476,
1, 9.15, 0.333333333333333, 101.279396149946, 20.4504329004329,
2, 0.342857142857143, 11.0416666666667, 114.264102564103, 148.394093406593,
17.3285625923784, 10.2605680868839, 109.262121733822, 5.68568095238095,
4.91666666666667, 27.8404512154512, 95.3755683538683, 134.882303769841,
61.262513966589, 16.5333333333333, 64.6593323051948, 37.6535103785104,
42.0317820956821, 17.3730092063492, 81.8735937673438, 44.7111111111111,
17.4607142857143, 70.0927904761905, 148.696792063492, 170.374507625708,
185.520274170274, 177.809072871573, 86.3721112221112, 176.200008488178,
15.1166666666667, 136.109471067821, 48.0101062250443, 166.262856565657,
148.329752057299, 151.820306375846, 4.18642884892885, 13.65,
17.5384920634921, 158.262582783883, 255.417342568543, 29.2134920634921,
197.809798534799, 29.85, 16.9095238095238, 20.8333333333333,
113.602744444444, 44.002380952381, 36.0333333333333, 318.15949047619,
116.7, 9.73333333333333, 459.457291197691, 200.920720879121,
314.905574729437, 468.928687626263, 127.85367965368, 34.46829004329,
127.564573784059, 168.830957864358, 276.134640779221, 201.892396392496,
1946.09400347577, 201.03562536075, 0.54047619047619, 782.099165160003,
425.714983516484, 89.7872682539683, 146.385452539683, 10.6666666666667,
1025.68925909923, 116.007914285714, 276.85727701204, 289.008666233766,
251.763574012009, 83.7539682539683, 348.782956092124, 241.232478499278,
35.9951548451548, 23.8844904761905, 16.75, 15.6583166666667,
23.4777777777778, 5.83333333333333, 262.787474045562, 285.537711241699,
63.2683473389356, 66.3647186147186, 2, 8.83323333333333, 751.311316139416,
20.0833333333333, 3.48333333333333, 313.547763557495, 24.6952380952381,
2.33333333333333, 60.6101524475524, 111.872585714286, 52.7153693528694,
181.421808730159, 86.6900043290043, 223.108003141303, 16.0825757575758,
304.663375396825, 48.2595238095238, 53.0539682539683, 117.610714285714,
3.1, 1.83333333333333, 305.834008148714, 197.169349200473, 0.5,
8, 33.7777777777778, 1.2, 5.58333333333333, 42.6051282051282,
144.887301587302, 65.7499666666667, 963.598530853141, 217.737908305747,
19.827380952381, 3.775, 229.018578571429, 7.19166666666667, 186.860334126984,
9.33333333333333, 0.75, 1, 43.8273809523809, 62.2753634920635,
301.048005944774, 89.4083452763611, 374.762004736842, 166.820046453546,
1058.5261360623, 872.182726540127, 54.4082666666667, 1227.53727689429,
321.227890629965, 148.721916971917, 277.273484848485, 897.280942113442,
226.137230929597, 72.7005952380952, 140.310317460317, 317.511606180094,
209.189406410256, 104.605501434676, 437.805596256685, 273.362576312576,
8.47222222222222, 227.129921804748, 0.943686868686869, 67.7638777888778,
20.4856893106893, 99.1611000111, 166.165773015873, 82.3694444444444,
227.211077777778, 72.4857142857143, 461.993158401598, 78.8, 210.535976984127,
428.665560794761, 35.797619047619, 133.786890638528, 20.4904761904762,
577.348705757576, 404.170196392496, 1101.04344335286, 270.924821327561,
196.366666666667, 5.83333333333333, 81.6839466089466, 516.43132186441,
2.33333333333333, 10.9095238095238, 54.1369047619048, 48.2956349206349,
676.496237656507, 137.799728238428, 14.4768149941046, 355.509695218997,
422.28376567026, 213.912283405959, 177.353159198024, 14.0459013125763
)), row.names = c(NA, -645L), class = c("tbl_df", "tbl", "data.frame"
))
I've found a solution with the tidyr package:
library(tidyr)
count <- as.data.frame(count)
count <- count %>% complete(numberclass = full_seq(numberclass, period = 1),fill=list(sum=0))
No need for an extra index vector.
My task is to plot cumulative distribution function of asymptotic Kernels. For this purpose, i prepared following R-code for cdf of Log-normal kernel; but my problem is that cdf graph is moving downward. After I used transformation provided by author of kernel (Lognormal kernel ).
Kindly provide suggestions/correction in this problem.
R code:
k <- 200
y <- c(306, 455, 210, 883, 310, 361, 218, 166, 170, 654, 728, 71, 567, 144, 613, 707, 61, 88, 301, 81, 624, 371, 394, 520, 574, 118, 390, 12, 473, 26, 533, 107, 53, 122, 814, 93,731, 460, 153, 433, 145, 583, 95, 303, 519, 643, 765, 735, 189, 53, 246, 689, 65, 5,132, 687, 345, 444, 223, 175, 60, 163, 65, 208, 428, 230, 305, 11, 132, 226, 426, 705,363, 11, 176, 791, 95, 167, 284, 641, 147, 163, 655, 239, 88, 245, 30, 179, 310, 477,166, 450, 364, 107, 177, 156, 11, 429, 351, 15, 181, 283, 201, 524, 13, 212, 524, 288, 363, 442, 199, 550, 54, 558, 207, 92, 60, 293, 202, 353, 267, 371, 387, 457, 337, 201, 222, 62, 353, 163, 31, 340, 229, 182, 156, 329, 291, 179, 268, 142, 194, 320, 181, 285,348, 197, 180, 186, 145, 350, 285, 110, 286, 270, 81, 131, 269, 135, 79, 59, 105, 239, 13, 183, 116)
n <- length(y)
h <- 0.79 * IQR(y) * length(y) ^ (-1/5)
x <- seq(min(y) + 0.05, max(y), length = k)
Fhat <- rep(0, k)
for (j in 1:k) {
for (i in 1:n) {
PhiLN <- matrix(rep(0, k * n), ncol = k)
PhiLN[i, j] <- pnorm((log(y[i])-log(x[j]))/(sqrt(4*log(1+h))))
}
Fhat[j] <- 1/n * (sum(PhiLN[, j]))
}
plot(x, Fhat, type = "l")
Reading from left to right along the x-axis of a Monthplot in R {stats}, I would like the first month to be June (and the last to be May). The axis is defaulting to January-to-December. How do I do make that change?
The first observation in my time series of monthly production data is June, being the start of the relevant agricultural production year. I have formatted my data as a vector of ts class, starting at June.
Using ggplot2 you could use scale_x_date to tweak the limits of your x (Date) axis:
# Generate some sample data
set.seed(2017);
df <- data.frame(
Date = seq(as.Date("2018-01-01"), by = "month", length.out = 24),
Value = runif(24))
library(ggplot2);
ggplot(df, aes(Date, Value)) +
geom_line() +
scale_x_date(
date_labels = "%b\n%Y",
date_breaks = "2 month",
limits = c(as.Date("2017-06-01"), as.Date("2019-05-31")))
The answer, I've discovered, lies in the 'phase' parameter in the monthplot arguments. For monthly data, 'phase' defaults to a January-December cycle. Compare the default monthplplot below, which uses the full AirPassengers dataset from January 1949 to December 1960, with the monthplot which follows it for the extracted 11-year window from June 1949 to May 1960. In the second monthplot, 'phase' is redefined by the variable 'cycPar'.
###------------------------------------------------------------------------------
### 1. Import data
###------------------------------------------------------------------------------
AirPassengers <- structure(c(112, 118, 132, 129, 121, 135, 148, 148, 136, 119,
104, 118, 115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114,
140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166,
171, 180, 193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196,
196, 236, 235, 229, 243, 264, 272, 237, 211, 180, 201, 204, 188,
235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267,
269, 270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313,
318, 374, 413, 405, 355, 306, 271, 306, 315, 301, 356, 348, 355,
422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435,
491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548,
559, 463, 407, 362, 405, 417, 391, 419, 461, 472, 535, 622, 606,
508, 461, 390, 432), .Tsp = c(1949, 1960.91666666667, 12), class = "ts")
###------------------------------------------------------------------------------
### 2. Plot the data using default monthplot - Jan-Dec cycle
###------------------------------------------------------------------------------
monthplot(AirPassengers, main = "Monthly International Air Passenger Numbers",
xlab = "Monthly Pax Numbers Jan '49 - Dec '60",
ylab = "")
###------------------------------------------------------------------------------
### 3. Extract the window from June 1949 to May 1960 and plot on a Jun-May cycle
###------------------------------------------------------------------------------
junMayYears <- window(AirPassengers, start = c(1949, 6), end = c(1960, 5), frequency
= 12)
cycPar <- ts(rep(c("Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb",
"Mar", "Apr", "May"), 11), start = c(1949, 6), frequency = 12)
monthplot(junMayYears,
phase = cycPar,
main = "Monthly International Air Passenger Numbers",
xlab = "Monthly Pax Numbers Jun '49 - May '60",
ylab = "")
###------------------------------------------------------------------------------
### END
###------------------------------------------------------------------------------
I have used R's circular package as well as openair to plot wind roses. What I am not able to do is show the frequencies of the winds in the bin range (shown below) I would like to use. How does one determine the frequencies (percent and relative) using these packages? I would like to print these out or actually create an histogram using this.
The bins are shown below
N, NNE, NE ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW
require(openair)
require(circular)
df<- read.csv("Direction.csv", header = TRUE)
df1<-df[c(-1,-2,-3,-4,-5,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-20)]
dput(head(df2))
structure(list(X850mb = structure(c(355, 349, 350, 65, 36, 56,
197, 282, 162, 219, 353, 32, 6, 14, 195, 45, 8, 182, 285, 285,
260, 315, 341, 343, 321, 10, 49, 61, 49, 159, 170, 49, 64, 98,
137, 178, 279, 173, 223, 221, 283, 246, 227, 231, 301, 212, 259,
329, 293, 229, 205, 261, 354, 349, 254, 311, 47, 176, 195, 224,
253, 293, 21, 34, 98, 225, 187, 204, 276, 280, 277, 233, 204,
233, 218, 212, 279, 320, 334, 205, 288, 15, 325, 322, 356, 308,
0, 343, 349, 10, 301, 340, 346, 281, 218, 305, 344, 304, 254,
275, 246, 306, 271, 309, 191, 197, 296, 312, 224, 265, 336, 2,
356, 336, 340, 349, 351, 11, 15, 306, 270, 249, 257, 271, 303,
328, 358, 52, 241, 298, 309, 259, 285, 268, 313, 339, 359, 314,
348, 309, 302, 322, 315, 285, 327, 327, 306, 29, 105, 111, 316,
1, 25, 332, 352, 270, 275, 238, 308, 338, 343, 349, 339, 346,
352, 24, 17, 5, 8, 9, 346, 318, 338, 22, 18, 337, 280, 274, 301,
302, 286, 6, 43, 35, 6, 26, 356, 4, 356, 325, 336, 20, 345, 354,
18, 54, 358, 313, 12, 327, 317, 329, 339, 274, 157, 143, 190,
306, 327, 332, 359, 49, 14, 323, 328, 331, 1, 306, 339, 21, 33), circularp = structure(list(type = "angles", units = "degrees",
template = "geographics", modulo = "2pi", zero = 1.5707963267949,
rotation = "clock"), .Names = c("type", "units", "template",
"modulo", "zero", "rotation")), class = c("circular", "integer"
))), .Names = "X850mb")
rose.diag(df2, bins = 16, main = '30yrs', col= 'darkgrey', prop = 2.0)
I suspect something like this is what you're after:
x <- cut(((as.vector(df2$X850)) + 360/(16*2) )%% 360,
seq(0,360,360/16) ,
c('N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW'))
table(x)