У меня есть набор данных, который выглядит следующим образом.Mutate несколько столбцов в dataframe
bankname bankid year totass cash bond loans
Bank A 1 1881 244789 7250 20218 29513
Bank B 2 1881 195755 10243 185151 2800
Bank C 3 1881 107736 13357 177612 NA
Bank D 4 1881 170600 35000 20000 5000
Bank E 5 1881 3200000 351266 314012 NA
и я хочу вычислить некоторые коэффициенты на основе балансовых балансов. и я хочу, чтобы набор данных, чтобы посмотреть, как этот
bankname bankid year totass cash bond loans CashtoAsset BondtoAsset LoanstoAsset
Bank A 1 1881 2447890 7250 202100 951300 0.002 0.082 0.388
Bank B 2 1881 195755 10243 185151 2800 0.052 0.945 0.014
Bank C 3 1881 107736 13357 177612 NA 0.123 1.648585431 NA
Bank D 4 1881 170600 35000 20000 5000 0.205 0.117 0.029
Bank E 5 1881 32000000 351266 314012 NA 0.0109 0.009 NA
Вот код, чтобы скопировать данные
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)
Во-первых, я избавилась от ВПЛ в балансах.
cols <- c("totass", "cash", "bond", "loans")
bankdata[cols][is.na(bankdata[cols])] <- 0
Тогда я вычислить коэффициенты
library(dplyr)
bankdata<-mutate(bankdata,CashtoAsset = cash/totass)
bankdata<-mutate(bankdata,BondtoAsset = bond/totass)
bankdata<-mutate(bankdata,loanstoAsset =loans/totass)
Но вместо вычисления все эти соотношения построчно, я хочу, чтобы создать внешний вид, чтобы сделать это все сразу. В Stata, я бы сделал
foreach x of varlist cash bond loans {
by bankid: gen `x'toAsset = `x'/ totass
}
Как бы это сделать?
Мета-комментарий: При переводе с одного языка на другой, вам не нужно быть слишком буквальным. Циклы в Stata часто работают лучше, чем массивные вычисления в R. (Даже обратное может быть правдой: новички в Stata с других языков часто пытаются использовать петли над наблюдениями, которые редко бывают нужны.) –
Я упрощаю свои переменные здесь, но в моем dataset, у меня есть более 20 категорий активов, поэтому использование цикла полезно. –
У меня нет ничего против петель; аналогично, типичный пользователь R, несомненно, доволен 20 столбцами .... –