у меня есть кадры два данных следующим образом:Расчет результата формулы путем сопоставления числа
a1 <- data.frame(ID = c(1:4), type = c(463,479, 5357,4771), amount = c(110,95,2100,23))
a2 <- data.frame(AltID = c(101:103), Calculation = c('[479]+[4771]','[5357]/([479]*[463])','([463]-[4771])/[5357]'))
> str(a1)
'data.frame': 4 obs. of 3 variables:
$ ID : int 1 2 3 4
$ type : num 463 479 5357 4771
$ amount: num 110 95 2100 23
> str(a2)
'data.frame': 3 obs. of 2 variables:
$ AltID : int 101 102 103
$ Calculation: Factor w/ 3 levels "([463]-[4771])/[5357]",..: 2 3 1
Цифры в «скобке», которые появляются в столбце «Расчет» в «а2» все имеющиеся в столбец «тип» в «a1», который имеет соответствующее значение в столбце «сумма» в «a1».
Цель состоит в том, чтобы добавить столбец в «a2», который использует формулу «Расчет» в каждой строке «a2», сопоставлять числа с типом a1 $ и использовать правильные арифметические операции для создания одного числа, которое соответствует каждой строке «AltID» в «a2».
Для приведенного выше примера,
a2$result <- rep(0,3)
, и я хотел бы получить:
a2$result[1] = 95+23
a2$result[2] = 2100/(95*110)
a2$result[3] = (110-23)/2100
мне было интересно, если есть умный способ сделать это.
Спасибо заранее
Очень умное решение. –