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.

Reply via email to