Я пытаюсь добавить четвертый столбец («коэффициент») к моему df1
фрейму данных на основе различных условий.
У меня есть 2 фрейма данных:
df1
:
Year Target sample
1 1995 A 6
2 1995 L 19
3 1995 M 8
4 1995 N 1
5 2003 A 1
6 2003 L 31
7 2003 M 1
8 2003 NT 62
9 2003 N 10
10 2009 A 7
11 2009 L 36
12 2009 M 4
13 2009 NT 45
14 2009 N 6
и df2
:
Year N.Total
1 1995 34
2 2003 105
3 2009 98
Я пытаюсь добавить столбец "ratio" к df1
, используя следующую l oop:
for (i in levels(df2$Year)){
for (r in 1:nrow(df1)){
j <- which(df2$Year == i)
if(df1$Year == i){df1$ratio[r] <- round((df1$[r])/(df2[j,2]),3)}
}}
Я хочу соотношение каждого «значения» для данного уровня «год». Я обнаружил, что переменная j
не меняется с каждым соответствующим уровнем df2 $ Year. Он использует общее количество выборок за 1995 год (34) для расчета крысы ios за 2003 и 2009 годы ... вместо 105 и 98 соответственно.
Результат должен выглядеть примерно так:
Year Target sample ratio
1 1995 A 6 0.176
2 1995 L 19 0.559
3 1995 M 8 0.235
4 1995 N 1 0.029
5 2003 A 1 0.010
6 2003 L 31 0.295
7 2003 M 1 0.010
8 2003 NT 62 0.590
9 2003 N 10 0.095
10 2009 A 7 0.071
11 2009 L 36 0.367
12 2009 M 4 0.041
13 2009 NT 45 0.459
14 2009 N 6 0.061
Я пробовал разные итерации и другое кодирование, но я не могу понять, что это правильно. Любая помощь будет принята с благодарностью!