Как написать алгебраическую функцию, специфичную для нескольких значений в нескольких переменных? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть два набора данных следующим образом (в упрощенном виде, хотите верьте, хотите нет):

df1 <- structure(list(TERMAC_Value = c(122L, 122L, 122L, 122L, 122L, 
605L), TERMAC_ShortName = structure(c(20L, 20L, 20L, 20L, 20L, 
17L), .Label = c("AG", "BWS", "DAWS2", "DEMF", "DM", "EAAW", 
"EABT", "EASDS", "EASM", "EEAW2", "KSP", "Marsh", "MAWS", "MEMF", 
"MeWG", "MWS", "PV", "TWS", "WM", "ZM"), class = "factor"), GLOBCOV_Value = c(30L, 
130L, 60L, 140L, 140L, 60L), Glob_ShortName = structure(c(14L, 
11L, 8L, 6L, 6L, 8L), .Label = c("Bare", "CldBdFrst", "CropVeg", 
"FloodFrt", "FloodGrs", "Grass", "GrassSgrub", "OpBdFrst", "OpNdFrst", 
"RainCrop", "Shrub", "ShrubGrass", "Sparse", "VegCrop", "Water"
), class = "factor")), row.names = c(NA, 6L), class = "data.frame")

    df2 <- structure(list(x = structure(c(1L, 2L, 6L, 7L, 3L, 4L, 5L), .Label = c("b1[1] VegCrop", 
"b1[2] Shrub", "b1b2[1,1] VegCrop ZM", "b1b2[1,2] VegCrop PV", 
"b1b2[2,2] Shrub PV", "b2[1] ZM", "b2[2] PV"), class = "factor"), 
    Mean = c(4.0188615, 1.0145846, -0.3134498, 1.1346487, -0.2701251, 
    -0.5978043, -0.06)), class = "data.frame", row.names = c(NA, 
-7L))

Моя проблема в том, что мне нужно вычислить уникальное значение по следующей формуле:

y = 4,05 + b1 [i] + b2 [i] + b1b2 [i, i]

Это будет дополнительный столбец на df1. Так, например, значение для ZM и VegCrop будет следующим:

у = 4,05 - 0,3 + 4 - 0,27

y = 4.23

Итак, мой новый набор данных будет:

TERMAC_Value TERMAC_ShortName GLOBCOV_Value Glob_ShortName   VALUE
          122               ZM            30        VegCrop  4.23
          122               ZM           130          Shrub  etc
          122               ZM            60       OpBdFrst ...
          122               ZM           140          Grass ...
          122               ZM           140          Grass ...
          605               PV            60       OpBdFrst ...

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

Заранее спасибо за любую помощь.

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