Hi, I have a hierachical code system such as the example below (the printed data are easiest to read). I would like to write a function that returns an 'imputed' data frame, ie. where the the parent values are calculated as the sum of the child values. So, for instance, STAT.01.01.06 is the sum of STAT.01.01.06.01 through STAT.01.01.06.06. The code I have written uses two for loops, and, moreover, does not work as intended. My starting point was to determine the code depth by counting the dots in the variable 'code' (using strsplit), then iterate over the tree from deep to shallow. Does anybody have a good idea as to how to approach this in R? theCodes <- c('STAT.01', 'STAT.01.01', 'STAT.01.01.01', 'STAT.01.01.02', 'STAT.01.01.03', 'STAT.01.01.04', 'STAT.01.01.05', 'STAT.01.01.06', 'STAT.01.01.06.01', 'STAT.01.01.06.02', 'STAT.01.01.06.03', 'STAT.01.01.06.04', 'STAT.01.01.06.05', 'STAT.01.01.06.06', 'STAT.01.02', 'STAT.01.02.01', 'STAT.01.02.02', 'STAT.01.02.03', 'STAT.01.02.03.01', 'STAT.01.02.03.02', 'STAT.01.02.03.03', 'STAT.01.02.03.04', 'STAT.01.02.03.05', 'STAT.01.03') theValues <- c('NA', 'NA', '15074.23366', '4882.942034', '1619.59628', '1801.722877', '1019.973666', 'NA', '503.9239317', '917.2189347', '6018.830465', '1944.11311', '1427.575402', '1965.725428', 'NA', '5857.293612', '5933.770263', '6077.089518', 'NA', '1427.180073', '455.9387993', '859.766603', '1002.983331', '2225.328211') df <- as.data.frame(cbind(code=theCodes, value=theValues)) print(df) code value 1 STAT.01 NA 2 STAT.01.01 NA 3 STAT.01.01.01 15074.23366 4 STAT.01.01.02 4882.942034 5 STAT.01.01.03 1619.59628 6 STAT.01.01.04 1801.722877 7 STAT.01.01.05 1019.973666 8 STAT.01.01.06 NA 9 STAT.01.01.06.01 503.9239317 10 STAT.01.01.06.02 917.2189347 11 STAT.01.01.06.03 6018.830465 12 STAT.01.01.06.04 1944.11311 13 STAT.01.01.06.05 1427.575402 14 STAT.01.01.06.06 1965.725428 15 STAT.01.02 NA 16 STAT.01.02.01 5857.293612 17 STAT.01.02.02 5933.770263 18 STAT.01.02.03 6077.089518 19 STAT.01.02.03.01 NA 20 STAT.01.02.03.02 1427.180073 21 STAT.01.02.03.03 455.9387993 22 STAT.01.02.03.04 859.766603 23 STAT.01.02.03.05 1002.983331 24 STAT.01.03 2225.328211 >
Thank you in advance! Cheers!! Albert-Jan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ All right, but apart from the sanitation, the medicine, education, wine, public order, irrigation, roads, a fresh water system, and public health, what have the Romans ever done for us? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.