Умножение одинаковых имен столбцов из разных фреймов данных - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть два кадра данных: один содержит исходные значения, а другой - коэффициенты. Я хочу создать новый фрейм данных, который выполняет следующие вычисления: standard_deviation * factor_of_variable * variable_value. Затем я хочу прикрепить строку _decomp в конце этих новых значений.

df1

Standard_Deviation    Var1     Var2    Var3   Intercept
                10       4        5       9           1 
                10      12        7      11           1
                10      25        9       3           1
                10      12        8       1           1

df2

    names      coefficients
Intercept             -1.25
     Var1              0.08
     Var2              1.08
     Var3             -0.04

Я хочу, чтобы мой окончательный результат выглядел так:

       Var1_decomp     Var2_decomp    Var3_decomp   Intercept_decomp
       3.2                      54           -3.6              -12.5 
       9.6                    75.6           -4.4              -12.5
       20                     97.2           -1.2              -12.5
       9.6                    86.4           -0.4              -12.5

1 Ответ

0 голосов
/ 07 ноября 2018

Сделать фреймы данных

df1 = read.table(text="Standard_Deviation    Var1     Var2    Var3   Intercept
                10       4        5       9           1 
                10      12        7      11           1
                10      25        9       3           1
                10      12        8       1           1", header = TRUE)

df2 = read.table(text="names      coefficients
Intercept             -1.25
     Var1              0.08
     Var2              1.08
     Var3             -0.04", header = TRUE)

Вы можете обработать таким способом.

out = matrix(0, nrow = length(df1$Standard_Deviation), ncol = NCOL(df1) - 1)

for (i in 2:NCOL(df1)){
    j = which(df2$names == names(df1)[i])
    out[,i-1] = df1[,1] * df1[,i] * df2[j,2]
    }

colnames(out) = paste0(names(df1)[-1], "_decomp")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...