У меня есть набор данных с двумя столбцами, как показано ниже
w p
0.5 0.5267
0.5 0.5239
1.0 0.5267
1.0 0.5267
1.0 0.5267
0.5 0.3870
0.5 0.3566
1.0 0.4914
1.0 0.4914
0.125 0.5267
0.125 0.5239
0.125 0.3870
0.125 0.3844
0.125 0.4942
0.125 0.4914
0.125 0.3566
0.125 0.3540
Я пытаюсь создать третий столбец на основе этого критерия ниже
Step1 : Start with Row 1 and check the value in Column w.
Row 1 column w is not 1
Step2 : if the value in column w is not 1, then read the next value in column w.
Read the next column w value (Row 2)
Step3 : repeat step 2 until the sum of values from column w is 1.
Column w row1 and row2 , 0.5 + 0.5 = 1
Step4 : Then read the corresponding values in column p.
0.5267, 0.5239
Step5 : Multiply the values in column p with corresponding values in column w.
0.5267*0.5 , 0.5239*0.5
Step6 : Add the values from Step 5
0.5267*0.5 + 0.5239*0.5
Step6 : Divide the values in column p with sum from step5.
0.5267/(0.5267*0.5 + 0.5239*0.5)
0.5239/(0.5267*0.5 + 0.5239*0.5)
Ожидаемый результат следующий
w p Result
0.5 0.5267 0.5267/(0.5267*0.5 + 0.5239*0.5)
0.5 0.5239 0.5239/(0.5267*0.5 + 0.5239*0.5)
1.0 0.5267 1
1.0 0.5267 1
1.0 0.5267 1
0.5 0.3870 0.3870/(0.3870*0.5 + 0.3566*0.5)
0.5 0.3566 0.3566/(0.3870*0.5 + 0.3566*0.5)
1.0 0.4914 1
1.0 0.4914 1
0.125 0.5267 0.5267/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.5239 0.5239/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.3870 0.3870/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.3844 0.3844/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.4942 0.4942/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.4914 0.4914/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.3566 0.3566/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
0.125 0.3540 0.3540/(0.5267*0.125 + 0.5239*0.125 + 0.3870*0.125 + 0.3844*0.125 + 0.4942*0.125 + 0.4914*0.125 + 0.3566*0.125 + 0.3540*0.125)
Я мог бы сделать это, используя циклы for и операторы ifelse, задаваясь вопросом, есть ли более элегантный способ выполнить sh это. Благодаря.