javascript - Summing Percent Changes in a Series -


i have large data set different subsets , number of variables.

the data looks this:

set.seed(362) day <- rep(seq(1:35), times = 3) variable.1 <- round(rnorm(n = day, mean = 1200, sd = 300),0) variable.2 <- round(rnorm(n = day, mean = 100, sd = 20), 0) variable.3 <- round(rnorm(n = day, mean = 20, sd = 5), 1) data <- data.frame(day, variable.1, variable.2, variable.3) bob <- sample("bob", 35, replace = t) jeff <- sample("jeff", 35, replace = t) kevin <- sample("kevin", 35, replace = t) names <- array(c(bob, jeff, kevin), dim = c(105,1)) data <- cbind(names, data) data       names day variable.1 variable.2 variable.3 1     bob   1       1369         91       20.6 2     bob   2       1155         96       18.8 3     bob   3        999         97       22.4 4     bob   4        947         93       11.4 5     bob   5       1442         90       20.1 6     bob   6       1170        125       17.8 7     bob   7       1028         81       16.0 8     bob   8        893        115       30.6 9     bob   9       1413         76       18.2 10    bob  10       1510        126       18.8 11    bob  11       1145        117       19.7 12    bob  12       1893         83       11.0 13    bob  13       1559        122       21.9 14    bob  14       1396         91       27.4 15    bob  15       1066        105       29.2 16    bob  16       1319         31       31.4 17    bob  17        959        134       25.0 18    bob  18       1325        108       11.8 19    bob  19       1278         93       17.0 20    bob  20        909         70       16.2 21    bob  21        777         84       23.3 22    bob  22       1770        105       11.6 23    bob  23       1080         79       14.6 24    bob  24        855         70       18.7 25    bob  25       1192         84       15.1 26    bob  26       1077        116       18.6 27    bob  27       1376        120       19.6 28    bob  28       1290        107       20.8 29    bob  29       1150         96       16.4 30    bob  30        991        111       22.0 31    bob  31       1433        113       16.0 32    bob  32       1125        104       17.8 33    bob  33       1076        122       21.6 34    bob  34       1491        113       24.1 35    bob  35       1163        102       20.0 36   jeff   1       1151         75       19.4 37   jeff   2       1375         87       24.7 38   jeff   3       1508        106       19.1 39   jeff   4       1569         84       15.4 40   jeff   5       1279         88       13.5 41   jeff   6        664        116       21.1 42   jeff   7        987         69       24.7 43   jeff   8       1913        121       20.6 44   jeff   9       1320         99       17.4 45   jeff  10       1384        126       25.6 46   jeff  11       1067        118       22.6 47   jeff  12       1060         81       20.9 48   jeff  13       1732         97       19.5 49   jeff  14       1097        112       17.1 50   jeff  15       1521        105       13.4 51   jeff  16       1139        123       19.0 52   jeff  17        996         99       20.8 53   jeff  18        713        127       27.0 54   jeff  19       1586         91       15.4 55   jeff  20        777        119       17.7 56   jeff  21       1232        106       22.4 57   jeff  22       1415        116       25.9 58   jeff  23       1256        117       23.1 59   jeff  24        955         97       24.3 60   jeff  25       1503        105       21.1 61   jeff  26       1965         80       17.6 62   jeff  27       1281        112       29.7 63   jeff  28       1467        122       23.8 64   jeff  29        939        118       17.4 65   jeff  30       1288         91       20.9 66   jeff  31       1441         99       16.6 67   jeff  32       1310         75       23.2 68   jeff  33       1155        112       22.9 69   jeff  34       1357         94       29.0 70   jeff  35       1378         81       26.6 71  kevin   1       1185         70       16.8 72  kevin   2       1709        115       24.2 73  kevin   3       1050        111       10.5 74  kevin   4       1474        104       10.7 75  kevin   5       1016         75       20.4 76  kevin   6        630         98       18.6 77  kevin   7        949         53       16.4 78  kevin   8       1284        118       16.6 79  kevin   9       1255         87        7.7 80  kevin  10        406        105       14.1 81  kevin  11       1182        110       16.8 82  kevin  12        803         73       27.7 83  kevin  13        960         84       20.3 84  kevin  14       1192         91       20.6 85  kevin  15        749        104       22.2 86  kevin  16        848        106       17.2 87  kevin  17       1567         77       12.4 88  kevin  18       1026        127       19.3 89  kevin  19       1384         93       19.4 90  kevin  20       1024         96       17.1 91  kevin  21       1226        105       12.6 92  kevin  22       1629        110       10.1 93  kevin  23       1197         64       24.1 94  kevin  24       1286         82       17.0 95  kevin  25       1104        103       26.2 96  kevin  26       1056        108       25.1 97  kevin  27       1481        145       10.7 98  kevin  28        949        124       18.8 99  kevin  29       1230        152       13.5 100 kevin  30       1481         78       15.4 101 kevin  31       1437         83       25.0 102 kevin  32       1446         81       21.3 103 kevin  33       1501        101       20.0 104 kevin  34       1288        103       17.8 105 kevin  35       1338        109       25.0 

i have created percent change each subject "variable.1" using delt function quantmod package , applying within ddply function in plyr package (to set condition subject):

library(quantmod) library(reshape2)  data <- ddply(data, "names", transform,     variable.1.percent.change = round(delt(variable.1)*100,1))      names day variable.1 variable.2 variable.3 delt.1.arithmetic 1     bob   1       1369         91       20.6                na 2     bob   2       1155         96       18.8             -15.6 3     bob   3        999         97       22.4             -13.5 4     bob   4        947         93       11.4              -5.2 5     bob   5       1442         90       20.1              52.3 6     bob   6       1170        125       17.8             -18.9 7     bob   7       1028         81       16.0             -12.1 8     bob   8        893        115       30.6             -13.1 9     bob   9       1413         76       18.2              58.2 10    bob  10       1510        126       18.8               6.9 11    bob  11       1145        117       19.7             -24.2 12    bob  12       1893         83       11.0              65.3 13    bob  13       1559        122       21.9             -17.6 14    bob  14       1396         91       27.4             -10.5 15    bob  15       1066        105       29.2             -23.6 16    bob  16       1319         31       31.4              23.7 17    bob  17        959        134       25.0             -27.3 18    bob  18       1325        108       11.8              38.2 19    bob  19       1278         93       17.0              -3.5 20    bob  20        909         70       16.2             -28.9 21    bob  21        777         84       23.3             -14.5 22    bob  22       1770        105       11.6             127.8 23    bob  23       1080         79       14.6             -39.0 24    bob  24        855         70       18.7             -20.8 25    bob  25       1192         84       15.1              39.4 26    bob  26       1077        116       18.6              -9.6 27    bob  27       1376        120       19.6              27.8 28    bob  28       1290        107       20.8              -6.2 29    bob  29       1150         96       16.4             -10.9 30    bob  30        991        111       22.0             -13.8 31    bob  31       1433        113       16.0              44.6 32    bob  32       1125        104       17.8             -21.5 33    bob  33       1076        122       21.6              -4.4 34    bob  34       1491        113       24.1              38.6 35    bob  35       1163        102       20.0             -22.0 36   jeff   1       1151         75       19.4                na 37   jeff   2       1375         87       24.7              19.5 38   jeff   3       1508        106       19.1               9.7 39   jeff   4       1569         84       15.4               4.0 40   jeff   5       1279         88       13.5             -18.5 41   jeff   6        664        116       21.1             -48.1 42   jeff   7        987         69       24.7              48.6 43   jeff   8       1913        121       20.6              93.8 44   jeff   9       1320         99       17.4             -31.0 45   jeff  10       1384        126       25.6               4.8 46   jeff  11       1067        118       22.6             -22.9 47   jeff  12       1060         81       20.9              -0.7 48   jeff  13       1732         97       19.5              63.4 49   jeff  14       1097        112       17.1             -36.7 50   jeff  15       1521        105       13.4              38.7 51   jeff  16       1139        123       19.0             -25.1 52   jeff  17        996         99       20.8             -12.6 53   jeff  18        713        127       27.0             -28.4 54   jeff  19       1586         91       15.4             122.4 55   jeff  20        777        119       17.7             -51.0 56   jeff  21       1232        106       22.4              58.6 57   jeff  22       1415        116       25.9              14.9 58   jeff  23       1256        117       23.1             -11.2 59   jeff  24        955         97       24.3             -24.0 60   jeff  25       1503        105       21.1              57.4 61   jeff  26       1965         80       17.6              30.7 62   jeff  27       1281        112       29.7             -34.8 63   jeff  28       1467        122       23.8              14.5 64   jeff  29        939        118       17.4             -36.0 65   jeff  30       1288         91       20.9              37.2 66   jeff  31       1441         99       16.6              11.9 67   jeff  32       1310         75       23.2              -9.1 68   jeff  33       1155        112       22.9             -11.8 69   jeff  34       1357         94       29.0              17.5 70   jeff  35       1378         81       26.6               1.5 71  kevin   1       1185         70       16.8                na 72  kevin   2       1709        115       24.2              44.2 73  kevin   3       1050        111       10.5             -38.6 74  kevin   4       1474        104       10.7              40.4 75  kevin   5       1016         75       20.4             -31.1 76  kevin   6        630         98       18.6             -38.0 77  kevin   7        949         53       16.4              50.6 78  kevin   8       1284        118       16.6              35.3 79  kevin   9       1255         87        7.7              -2.3 80  kevin  10        406        105       14.1             -67.6 81  kevin  11       1182        110       16.8             191.1 82  kevin  12        803         73       27.7             -32.1 83  kevin  13        960         84       20.3              19.6 84  kevin  14       1192         91       20.6              24.2 85  kevin  15        749        104       22.2             -37.2 86  kevin  16        848        106       17.2              13.2 87  kevin  17       1567         77       12.4              84.8 88  kevin  18       1026        127       19.3             -34.5 89  kevin  19       1384         93       19.4              34.9 90  kevin  20       1024         96       17.1             -26.0 91  kevin  21       1226        105       12.6              19.7 92  kevin  22       1629        110       10.1              32.9 93  kevin  23       1197         64       24.1             -26.5 94  kevin  24       1286         82       17.0               7.4 95  kevin  25       1104        103       26.2             -14.2 96  kevin  26       1056        108       25.1              -4.3 97  kevin  27       1481        145       10.7              40.2 98  kevin  28        949        124       18.8             -35.9 99  kevin  29       1230        152       13.5              29.6 100 kevin  30       1481         78       15.4              20.4 101 kevin  31       1437         83       25.0              -3.0 102 kevin  32       1446         81       21.3               0.6 103 kevin  33       1501        101       20.0               3.8 104 kevin  34       1288        103       17.8             -14.2 105 kevin  35       1338        109       25.0               3.9 

what i'd create column , instead of having percent change having data sum of percent changes have come above it. have tried doing stuff lag function , sum, sums percent change day do. percent change continually sum up. example, first subject, bob, percent changes are:

   na -15.6 -13.5  -5.2  52.3 

etc.

i column next say

percent change    percent addition             na                  na          -15.6               -15.6          -13.5               -29.1           -5.2               -34.3           52.3                  18 

i can't seem figure out best way of doing , applying large group of subjects (like did percent change).

also, side note, know why when apply delt function names column delt.1.arithmetic rather column name set , unable colnames(data) , rename it, reason?

please try:

data$delt.1.arithmetic[is.na(data$delt.1.arithmetic)] <- 0  percent_addition <- aggregate(x = data$delt.1.arithmetic, = list(data$names), fun = cumsum) percent_addition <- percent_addition[, -1] percent_addition <- c(t(x = percent_addition))  data$delt.1.arithmetic[data$delt.1.arithmetic == 0] <- na percent_addition[percent_addition == 0] <- na   data <- cbind(data, percent_addition) 

the above code worked when applied data-frame. caveat assumes nas , 0s inter-changeable.


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -