I find it difficult to perform a calculation that is defined iteratively. The following data is given as an example (the actual data set is much larger):
## DATA ## # Columns Individual<-c("A","B","C","D","E","F","G","H1","H2","H3","H4","H5","K1","K2","K3","K4","K5") P1<-c(0,0,"A",0,"C","C",0, rep("E",5),"H1","H2","H3","H4","H5") P2<-c(0,0,"B",0,"D", "E",0,rep("G",5),"H1","H2","H3","H4","H5") # Dataframe myd<-data.frame(Individual,P1,P2,stringsAsFactors=FALSE) Individual P1 P2 1 A 0 0 2 B 0 0 3 CAB 4 D 0 0 5 ECD 6 FCE 7 G 0 0 8 H1 EG 9 H2 EG 10 H3 EG 11 H4 EG 12 H5 EG 13 K1 H1 H1 14 K2 H2 H2 15 K3 H3 H3 16 K4 H4 H4 17 K5 H5 H5
The data represent the relationship between an Individual and two parents, P1 , P2 .
The required calculation, indicated by relationA , shows how much each person is associated with A.
By definition, the relationship between A and A is set to 1. The values ββfor all other entities should be calculated based on the information in the table as follows:
The value of relationA for an individual should be equal to 1/2 (the value of relationA of P1 of the individual) + 1/2 (the value of relationA of P2 of the individual)
FOR EXAMPLE
Individual P1 P2 relationA 1 A 0 0 1 2 B 0 0 0 3 CAB (A = 1 + B = 0)/2 = 0.5 4 D 0 0 0 5 ECD (C= 0.5 + D = 0)/2 = 0.25 6 FCE (C = 0.5 + E = 0.25)/2 = 0.375
The expected output is as follows:
Individual P1 P2 relationA 1 A 0 0 1 2 B 0 0 0 3 CAB 0.5 4 D 0 0 0 5 ECD 0.25 6 FCE 0.375 7 G 0 0 0 8 H1 EG 0.125 9 H2 EG 0.125 10 H3 EG 0.125 11 H4 EG 0.125 12 H5 EG 0.125 13 K1 H1 H1 0.125 14 K2 H2 H2 0.125 15 K3 H3 H3 0.125 16 K4 H4 H4 0.125 17 K5 H5 H5 0.125
My difficulty is to correctly express this in R Any help would be greatly appreciated.