2

関数を使用して、2 つの列を互いに乗算したいと考えていdplyr's mutateます。

var1しかし、変化条件ごとに新しい行を書く代わりに、ベクトルに格納されている列の名前を使用したいと思いますvar2. たとえば、最後に、現金とローンの列を互いに掛け合わせた結果を含むbankdata名前の既存の列を追加したいと考えています。result1これは、3 つの新しい列が作成されるまで続けられます。

再現可能なコード:

bankname <- c("Bank A", "Bank B", "Bank C", "Bank D", "Bank E")
bankid <- c(1, 2, 3, 4, 5)
year <- c(1881, 1881, 1881, 1881, 1881)
totass <- c(244789, 195755, 107736, 170600, 32000000)
cash <- c(7250, 10243, 13357, 35000, 351266)
bond <- c(20218, 185151, 177612, 20000, 314012)
loans <- c(29513, 2800, NA, 5000, NA)
bankdata <- data.frame(bankname, bankid, year, totass, cash, bond, loans)

ベクトルvar1var2には、乗算する列名 ( cash*loans, bond*cash, loans*bankid) が含まれており、出力は新しい列の名前です。

var1 <- c("cash", "bond", "loans")
var2 <- c("loans","cash", "bankid")
output <- c("result1", "result2", "result3")

私はこのようなことをしたいと思います:

bankdata %>%
  mutate_at(.funs = funs(output = var1*var2), vars(var1, var2))

bankdata %>%
  mutate_at(.funs = funs(result1 = cash*., result2 = bond*., result3 = loans*.), vars(var2))
4

1 に答える 1