R: Использование al oop для добавления столбца значений, рассчитанных на основе другого столбца, и условного оператора из другого фрейма данных - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь добавить четвертый столбец («коэффициент») к моему 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

Я пробовал разные итерации и другое кодирование, но я не могу понять, что это правильно. Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...