У меня следующая проблема:
DataFrame с именем cr1 с 553 столбцами
Затем я делаю два цикла следующим образом:
cr2=copy(cr1)
#-----------------#
#Loop on scenarios#
#-----------------#
@threads for k in 0:499
cr1=copy(cr2)
cr1[!,"scn"].=k
cr1 = leftjoin(cr1,tra,on = [:scn])
for i in 1:40
#----------------------#
##Projection on 40 years
#----------------------#
cr1[!,"ch_prime"*str(i)].=cr1[!,"ch_prime"].*(cr1[!,"coll_"*str(i)]
...job on other columns
На Вначале я делаю копию cr1, чтобы сохранить видение DataFrame на этом этапе. Действительно, мне нужно перезапускать это видение на каждой итерации kl oop. Затем я рассматриваю сценарий = k для правильного соединения с DF, называемым tra, с 40 столбцами (от tra1 до tra40) и k строками. Наконец, я делаю еще l oop, чтобы спроецировать все свои переменные на 40 лет.
Но это не работает. Джулия делает некоторую работу, но cr1 не изменяется.
Я попытался добавить глобал в первую строку l oop и сжать @ thread
for k in 0:499
global cr1=copy(cr2)
Тогда это работает, но без многопоточности, и я хочу сохранить его для повышения производительности
Есть ли у вас какой-нибудь другой способ сделать это или способ перенести последнее решение?
EDIT
Вот полный код (извините, немного длинный), если он может помочь:
#Définit la fonction string avec une syntaxe plus courte
#Permet de conserver le code Python
function str(x)
string(x)
end
# %% Début du programme
@time begin
##+ Import des tables
donnee=CSV.File("/Users/Python/Python_VIF_sto/donnee.csv")|> DataFrame!
lapse=CSV.File("/Users/Python/Python_VIF_sto/lapse.csv")|> DataFrame!
dc=CSV.File("/Users/Python/Python_VIF_sto/dc.csv")|> DataFrame!
ind_action=CSV.File("/Users/Python/Python_VIF_sto/ind_action.csv")|> DataFrame!
tra=CSV.File("/Users/Python/Python_VIF_sto/tra.csv")|> DataFrame!
ts=CSV.File("/Users/Python/Python_VIF_sto/ts.csv")|> DataFrame!
ech=CSV.File("/Users/Python/Python_VIF_sto/ech.csv")|> DataFrame!
sw=CSV.File("/Users/Python/Python_VIF_sto/sw.csv")|> DataFrame!
df=CSV.File("/Users/Python/Python_VIF_sto/df.csv")|> DataFrame!
tx_is=CSV.File("/Users/Python/Python_VIF_sto/tx_is.csv")|> DataFrame!
fga=CSV.File("/Users/Python/Python_VIF_sto/fga.csv")|> DataFrame!
fgp=CSV.File("/Users/Python/Python_VIF_sto/fgp.csv")|> DataFrame!
fgacq=CSV.File("/Users/Python/Python_VIF_sto/fgacq.csv")|> DataFrame!
inf=CSV.File("/Users/Python/Python_VIF_sto/inf.csv")|> DataFrame!
#Definition des parametres communs
ppb0=1347911164; # PPB initiale
const global dur_proj=40; # Durée de projection
nb_coll=6; # 6 années de collecte possible
tcomp_mod=0 # Mode de determination composante technique PB min (1=fixe ou 0=libre)
tcomp_fixe=1 # Composante si fixe (1=prev 0=RT)
fdc=1 # 1 = frontiere des contrats S2 / 0 = désactivée
#CR initial avec les paramètres en t=0#
cr1=copy(donnee)
cr1[!, :annee].= 1
cr1[!, :der_fg].=0.01 #Dérive des frais au delà inflation
#Creation des dummies#
cr1[!,:eu] .= (cr1.supp.=="eu")
cr1[!,:uc] .= (cr1.supp.=="uc")
cr1[!, :prev] .= (cr1.supp.=="prev")
cr1[!, :ve] .= (cr1.supp.=="ve")
#Construction des taux projetés sur horizon de projection(rachats, décès, indices..)#
#Deces - par produit#
cr1 = leftjoin(cr1,dc, on =[:age, :tab_dc,:ab_dc]) # Décès
#----------------------#
#Echeances & Arbitrages#
#----------------------#
cr1 = leftjoin(cr1,ech, on =[:tab_ech]) #Echeances
cr1 = leftjoin(cr1,sw, on =[:tab_sw]) #Arbitrages
#---------------------------#
#Frais admin / acq / prestas#
#---------------------------#
cr1 = leftjoin(cr1,fga, on =[:fg_ad]) #Frais d"administration
cr1 = leftjoin(cr1,fgp, on =[:fg_prest]) #Frais sur prestations
cr1 = leftjoin(cr1,fgacq,on =[:fg_acq]) #Frais d"acquisition
#------------#
#---Lapses---#
#------------#
cr1 = leftjoin(cr1,lapse,on = [:tab_lapse]) #Rachats - vision simple - pas de gestion de la collecte
m = Matrix(cr1[!,columnindex(cr1, :anc1):columnindex(cr1, :anc100)])
v = cr1.anc
insertcols!(cr1, ["lap$k" => getindex.(Ref(m), axes(cr1, 1), v .+ k .- 1) for k in 1:dur_proj]...)
#--------#
#Collecte#
#--------#
# On force la collecte à zero au dela du plan
for i in 7:dur_proj
cr1[!,"coll_"*str(i)].=0
end
# Collecte prevoyance
for i in 1:dur_proj
cr1[!,"ca_prev"*str(i)].=cr1[!,"ca_prev"*str(i-1)].*(1 .-cr1[!,"lap"*str(i)])
.+cr1[!,"coll_"*str(i)].*cr1[!,"prev"]
end
# Application de la frontière des contrats au delà de la première année
for i in 2:dur_proj
cr1[!,"ca_prev"*str(i)].=cr1[!,"ca_prev"*str(i)].*cr1[!,"fdc"]
end
#------------------------------------------#
#Allocation PPB ini aux prorata des PM Euro#
#------------------------------------------#
s=(cr1[!,"eu"].+cr1[!,"ve"]).*cr1[!,"pm_0"]
som=max(1,sum(s)) #Eviter les divisions par zero qd pas de produits euros
ratio=s/som
cr1[!,"ppb0"].=ppb0.*ratio #Quid de la prev
cr2=copy(cr1)
#------------------------#
#Boucle sur les scenarios#
#------------------------#
@threads for k in 0:499
global cr1=copy(cr2)
cr1[!,"scn"].=k #scenario deterministe / parametrable en sto
#---------------------------------#
#Paramètres d"actifs et financiers#
#---------------------------------#
cr1 = leftjoin(cr1,tra,on = [:scn]) #TRA
cr1 = leftjoin(cr1,ts,on = [:tab_ts]) #TS
cr1 = leftjoin(cr1,ind_action,on = [:scn]) #Indice actions
cr1 = leftjoin(cr1,df,on = [:scn]) #Discount Factor
cr1 = leftjoin(cr1,tx_is,on = [:scn]) #Taux d"IS
cr1 = leftjoin(cr1,inf,on = [:scn]) #Inflation
##CR deterministe sur duree de projection
for i in 1:dur_proj
#---------#
##Technique
#---------#
cr1[!,"ch_prime"*str(i)].=cr1[!,"ch_prime"].*(cr1[!,"coll_"*str(i)].*(cr1[!,"eu"]
.+cr1[!,"uc"].+cr1[!,"ve"]).+cr1[!,"ca_prev"*str(i)])##chargements sur primes OK
cr1[!,"dc"*str(i)].=cr1[!,"qx"*str(i)].*(cr1[!,"pm_"*str(i-1)].+cr1[!,"ca_prev"*str(i)])#deces OK
cr1[!,"rach"*str(i)].=cr1[!,"lap"*str(i)].*cr1[!,"pm_"*str(i-1)].*(cr1[!,"eu"].+cr1[!,"uc"].+cr1[!,"ve"]) #Rachats structurels KO - Defo ancienneté avec collecte
cr1[!,"eche"*str(i)].=cr1[!,"ech"*str(i)].*cr1[!,"pm_"*str(i-1)]#Echeances OK
#cr1["arb"*str(i)]=cr1["sw"*str(i)]*cr1["pm_"+str(i-1)] #Arbitrages € vers UC KO lien produit multi
cr1[!,"ch_enc"*str(i)].=cr1[!,"ch_enc"].*cr1[!,"pm_"*str(i-1)].+(cr1[!,"coll_"*str(i)]
.-cr1[!,"rach"*str(i)].-cr1[!,"dc"*str(i)]).*((1 .+cr1[!,"ch_enc"]).^(0.5).- 1)#chargements sur encours OK
#RT Prevoyance (intègre de fait les chargements sur primes => à oter du résultat ass)
cr1[!,"rt"*str(i)].=(1 .-cr1[!,"SP"].-cr1[!,"ch_prime"]).*cr1[!,"ca_prev"*str(i)].*cr1[!,"prev"]
#---------#
##Financier
#---------#
#IT#
cr1[!,"IT"*str(i)].=(cr1[!,"eu"].+cr1[!,"ve"]).*(cr1[!,"IT"].*cr1[!,"pm_"*str(i-1)].+(cr1[!,"coll_"*str(i)]
.-cr1[!,"rach"*str(i)].-cr1[!,"dc"*str(i)]).*((1 .+cr1[!,"IT"]).^(0.5).-1))#IT OK
#PB distribuée
cr1[!,"pb_dist"*str(i)].=(cr1[!,"eu"].+cr1[!,"ve"]).*((cr1[!,"ts"*str(i)].-cr1[!,"IT"]).*cr1[!,"pm_"*str(i-1)]
.+(cr1[!,"coll_"*str(i)].-cr1[!,"rach"*str(i)].-cr1[!,"dc"*str(i)]).*((1 .+cr1[!,"ts"*str(i)]
.-cr1[!,"IT"]).^(0.5).-1))#PB dist OK
#Ajustements ACAV
cr1[!,"acav"*str(i)].=(cr1[!,"uc"].*cr1[!,"pm_"*str(i-1)].*(cr1[!,"inda"*str(i+1)]./cr1[!,"inda"*str(i)].-1)
.+(cr1[!,"coll_"*str(i)].-cr1[!,"ch_prime"*str(i)].-cr1[!,"rach"*str(i)].-cr1[!,"dc"*str(i)]).*cr1[!,"uc"]
.*(cr1[!,"inda"*str(i+1)]./cr1[!,"inda"*str(i)].-1)./2)
#Produits financiers contrats
cr1[!,"pfi"*str(i)].=(cr1[!,"eu"].+cr1[!,"ve"]).*cr1[!,"tra"*str(i)].*(2 .*cr1[!,"pm_"*str(i-1)]
.+cr1[!,"coll_"*str(i)].-cr1[!,"rach"*str(i)].-cr1[!,"dc"*str(i)])./2 #produits financiers par produits - hors PPB - hors FP
#Produits financiers sur PPB <=> Au prorata pfi contrats euros(suffisant en vision marginale)
cr1[!,"pfi_ppb"*str(i)].=cr1[!,"ppb"*str(i-1)].*cr1[!,"tra"*str(i)]
#CSG
cr1[!,"csg"*str(i)].=(cr1[!,"eu"].+cr1[!,"ve"]).*cr1[!,"csg"].*(cr1[!,"pb_dist"*str(i)].+cr1[!,"IT"*str(i)].-cr1[!,"ch_enc"*str(i)])
##PM fin
cr1[!,"pm_"*str(i)].=(cr1[!,"pm_"*str(i-1)].+cr1[!,"coll_"*str(i)].+cr1[!,"ca_prev"*str(i)].-cr1[!,"ch_prime"*str(i)]
.-cr1[!,"ch_enc"*str(i)].-cr1[!,"dc"*str(i)].-cr1[!,"rach"*str(i)].+cr1[!,"acav"*str(i)].-cr1[!,"eche"*str(i)]
.+cr1[!,"IT"*str(i)].+cr1[!,"pb_dist"*str(i)].-cr1[!,"csg"*str(i)]).*(cr1[!,"eu"].+cr1[!,"ve"].+cr1[!,"uc"])
#Retrocessions UC
cr1[!,"retro"*str(i)].=cr1[!,"retro"].*(cr1[!,"pm_"*str(i-1)].+cr1[!,"pm_"*str(i)]).*0.5
#Correctifs ratios de frais
cr1[!,"cor_fg_uc0"].=1
cr1[!,"cor_fg_eu0"].=1
cr1[!,"cor_fg_uc"*str(i)].=cr1[!,"cor_fg_uc"*str(i-1)].*((cr1[!,"inf"*str(i-1)].+cr1[!,"der_fg"])
./(cr1[!,"inda"*str(i+1)]./cr1[!,"inda"*str(i)]))
cr1[!,"cor_fg_eu"*str(i)].=cr1[!,"cor_fg_eu"*str(i-1)].*((cr1[!,"inf"*str(i-1)].+cr1[!,"der_fg"])
./(1 .+cr1[!,"ts"*str(i)].+cr1[!,"IT"]))
#Frais généraux
##FG d"administration epargne
cr1[!,"fg_ad"*str(i)].=cr1[!,"fga"*str(i)].*(cr1[!,"cor_fg_uc"*str(i)].*cr1[!,"uc"].+cr1[!,"cor_fg_eu"*str(i)]
.*(cr1[!,"eu"].+cr1[!,"prev"].+cr1[!,"ve"])).*(cr1[!,"pm_"*str(i-1)].+cr1[!,"pm_"*str(i)].-(cr1[!,"IT"*str(i)]
.+cr1[!,"pb_dist"*str(i)].+cr1[!,"csg"*str(i)]).*(cr1[!,"eu"].+cr1[!,"ve"]))./2
##FG d"aquisition
cr1[!,"fg_acq"*str(i)].=cr1[!,"fgacq"*str(i)].*(cr1[!,"coll_"*str(i)].+cr1[!,"ca_prev"*str(i)])
#FG Prestations
cr1[!,"fg_prest"*str(i)].=cr1[!,"fgp"*str(i)].*(cr1[!,"cor_fg_uc"*str(i)].*cr1[!,"uc"].+cr1[!,"cor_fg_eu"*str(i)]
.*(cr1[!,"eu"].+cr1[!,"prev"].+cr1[!,"ve"])).*(cr1[!,"rach"*str(i)].+cr1[!,"dc"*str(i)].+cr1[!,"ca_prev"*str(i)]
.*cr1[!,"SP"])
#Coms de gestion & admin (mma)
cr1[!,"com_ad"*str(i)].=cr1[!,"com_ad"].*(cr1[!,"pm_"*str(i-1)].+cr1[!,"pm_"*str(i)].-(cr1[!,"IT"*str(i)]
.+cr1[!,"pb_dist"*str(i)].+cr1[!,"csg"*str(i)]).*(cr1[!,"eu"].+cr1[!,"ve"]))./2#OK
cr1[!,"com_acq"*str(i)].=cr1[!,"com_acq"].*cr1[!,"coll_"*str(i)]##=>OK
#PB min
#Solde souscription
cr1[!,"ssous"*str(i)].=(cr1[!,"eu"].+cr1[!,"ve"].+cr1[!,"prev"]).*(cr1[!,"ch_enc"*str(i)].+cr1[!,"rt"*str(i)]
.+cr1[!,"ch_prime"*str(i)].-cr1[!,"fg_ad"*str(i)].-cr1[!,"fg_acq"*str(i)].-cr1[!,"fg_prest"*str(i)]
.-cr1[!,"com_ad"*str(i)].-cr1[!,"com_acq"*str(i)])
#Determination composante technique (4,5% Pprev ou 10% tech)
if tcomp_mod==1
cr1[!,"tcomp"*str(i)].=tcomp_fixe
elseif tcomp_mod==0 && sum(cr1[!,"ca_prev"*str(i)]).*0.045 .> sum(cr1[!,"ssous"*str(i)]).*0.1
cr1[!,"tcomp"*str(i)].=1
else
cr1[!,"tcomp"*str(i)].=0
end
#Quid du changement de contrainte sur le technique en fonction des produits enlevés?
cr1[!,"pb_min"*str(i)].=0.85.*(cr1[!,"pfi"*str(i)].+cr1[!,"pfi_ppb"*str(i)]).+(cr1[!,"ssous"*str(i)]
.-cr1[!,"tcomp"*str(i)].*cr1[!,"ca_prev"*str(i)].*0.045) .-((1 .-cr1[!,"tcomp"*str(i)]).*cr1[!,"ssous"*str(i)].*0.10)
#Variation de PPB par produit
cr1[!,"varppb"*str(i)].=cr1[!,"pb_min"*str(i)].-cr1[!,"IT"*str(i)].-cr1[!,"pb_dist"*str(i)]
#PPB par produit
cr1[!,"ppb"*str(i)].=cr1[!,"ppb"*str(i-1)].+cr1[!,"varppb"*str(i)]
#RT Vie entière
cr1[!,"rtve"*str(i)].=cr1[!,"ve"].*(-1).*(cr1[!,"ch_enc"*str(i)].-cr1[!,"fg_ad"*str(i)].-cr1[!,"fg_prest"*str(i)]
.-(cr1[!,"ca_prev"*str(i)].-cr1[!,"ch_prime"*str(i)].-cr1[!,"varppb"*str(i)].-cr1[!,"fg_ad"*str(i)]
.-cr1[!,"fg_prest"*str(i)].-cr1[!,"dc"*str(i)].-cr1[!,"rach"*str(i)]))
#PM finale yc RT Vie entière
cr1[!,"pm_"*str(i)].=cr1[!,"pm_"*str(i)].+cr1[!,"rtve"*str(i)].-cr1[!,"varppb"*str(i)].*cr1[!,"ve"]
#Impots
cr1[!,"IS"*str(i)].=(cr1[!,"ch_prime"*str(i)].+cr1[!,"ch_enc"*str(i)].+cr1[!,"pfi"*str(i)].+cr1[!,"pfi_ppb"*str(i)]
.-cr1[!,"pb_min"*str(i)].+cr1[!,"retro"*str(i)].+cr1[!,"rt"*str(i)].-cr1[!,"fg_ad"*str(i)].-cr1[!,"fg_acq"*str(i)]
.-cr1[!,"fg_prest"*str(i)].-cr1[!,"com_ad"*str(i)].-cr1[!,"com_acq"*str(i)]).*cr1[!,"tx_is"*str(i)]
#Résultat net Assurance apres IS
cr1[!,"rnai"*str(i)].=(cr1[!,"ch_prime"*str(i)].+cr1[!,"ch_enc"*str(i)].+cr1[!,"pfi"*str(i)].+cr1[!,"pfi_ppb"*str(i)]
.-cr1[!,"pb_min"*str(i)].+cr1[!,"retro"*str(i)].+cr1[!,"rt"*str(i)].-cr1[!,"fg_ad"*str(i)].-cr1[!,"fg_acq"*str(i)]
.-cr1[!,"fg_prest"*str(i)].-cr1[!,"com_ad"*str(i)].-cr1[!,"com_acq"*str(i)]).*(1 .-cr1[!,"tx_is"*str(i)])
#Profits futurs "actualisés (PVFP)
cr1[!,"pvfp"*str(i)].=cr1[!,"rnai"*str(i)].*cr1[!,"df"*str(i)]
end
#---------------------------------------------#
#Variables d"intérêt actualisés sur duree proj
#Principaux éléments de marge
#---------------------------------------------#
cr1[!,"ch_enc_actu"].=0
cr1[!,"ch_prime_actu"].=0
cr1[!,"pfnd_actu"].=0
cr1[!,"retro_actu"].=0
cr1[!,"rt_actu"].=0
cr1[!,"fg_ad_actu"].=0
cr1[!,"fg_acq_actu"].=0
cr1[!,"fg_prest_actu"].=0
cr1[!,"com_ad_actu"].=0
cr1[!,"com_acq_actu"].=0
cr1[!,"IS_actu"].=0
cr1[!,"pvfp_actu"].=0
cr1[!,"pm_actu"].=(cr1[!,"pm_0"].*cr1[!,"df1"].-cr1[!,"pm_"*str(dur_proj-2)].*cr1[!,"df"*str(dur_proj-1)])./2 #initialise
cr1[!,"ca_actu"].=0
cr1[!,"pfi_actu"].=0
cr1[!,"pfi_ppb_actu"].=0
cr1[!,"pb_dist_actu"].=0
cr1[!,"IT_actu"].=0
cr1[!,"varppb_actu"].=0
cr1[!,"dc_actu"].=0
cr1[!,"rach_actu"].=0
cr1[!,"marge_sous_actu"].=0
cr1[!,"marge_acq_actu"].=0
cr1[!,"marge_ges_actu"].=0
cr1[!,"marge_fi_actu"].=0
for i in 1:dur_proj
cr1[!,"ch_enc_actu"].=cr1[!,"ch_enc_actu"].+(cr1[!,"ch_enc"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"ch_prime_actu"].=cr1[!,"ch_prime_actu"].+(cr1[!,"ch_prime"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"pfnd_actu"].=cr1[!,"pfnd_actu"].+(cr1[!,"pfi"*str(i)].+cr1[!,"pfi_ppb"*str(i)].-cr1[!,"pb_min"*str(i)]).*cr1[!,"eu"].*cr1[!,"df"*str(i)]
cr1[!,"retro_actu"].=cr1[!,"retro_actu"].+cr1[!,"retro"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"rt_actu"].=cr1[!,"rt_actu"].+cr1[!,"rt"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"fg_ad_actu"].=cr1[!,"fg_ad_actu"].+cr1[!,"fg_ad"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"fg_acq_actu"].=cr1[!,"fg_acq_actu"].+cr1[!,"fg_acq"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"fg_prest_actu"].=cr1[!,"fg_prest_actu"].+cr1[!,"fg_prest"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"com_ad_actu"].=cr1[!,"com_ad_actu"].+cr1[!,"com_ad"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"com_acq_actu"].=cr1[!,"com_acq_actu"].+cr1[!,"com_acq"*str(i)].*cr1[!,"df"*str(i)]
cr1[!,"IS_actu"].=cr1[!,"IS_actu"].+(cr1[!,"IS"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"pvfp_actu"].=cr1[!,"pvfp_actu"].+cr1[!,"pvfp"*str(i)]#déjà actualisée
cr1[!,"ca_actu"].=cr1[!,"ca_actu"].+(cr1[!,"ca_prev"*str(i)].+cr1[!,"coll_"*str(i)]).*cr1[!,"df"*str(i)]
cr1[!,"pfi_actu"].=cr1[!,"pfi_actu"].+(cr1[!,"pfi"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"pfi_ppb_actu"].=cr1[!,"pfi_ppb_actu"].+(cr1[!,"pfi_ppb"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"pb_dist_actu"].=cr1[!,"pb_dist_actu"].+(cr1[!,"pb_dist"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"IT_actu"].=cr1[!,"IT_actu"].+(cr1[!,"IT"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"varppb_actu"].=cr1[!,"varppb_actu"].+(cr1[!,"varppb"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"dc_actu"].=cr1[!,"dc_actu"].+(cr1[!,"dc"*str(i)].*cr1[!,"df"*str(i)])
cr1[!,"rach_actu"].=cr1[!,"rach_actu"].+(cr1[!,"rach"*str(i)].*cr1[!,"df"*str(i)])
end
for i in 1:dur_proj-1
cr1[!,"pm_actu"].=cr1[!,"pm_actu"].+(cr1[!,"pm_"*str(i)].*cr1[!,"df"*str(i+1)])
end
cr1[!,"marge_sous_actu"].=cr1[!,"rt_actu"]
cr1[!,"marge_acq_actu"].=cr1[!,"ch_prime_actu"].-cr1[!,"com_acq_actu"].-cr1[!,"fg_acq_actu"]
cr1[!,"marge_ges_actu"].=cr1[!,"ch_enc_actu"].+cr1[!,"retro_actu"].-cr1[!,"com_ad_actu"].-cr1[!,"fg_ad_actu"].-cr1[!,"fg_prest_actu"]
cr1[!,"marge_fi_actu"].=cr1[!,"pfnd_actu"]
# cr3 = cr1[:, All(Between(:gamme,:pm_0), Between(:ch_enc_actu,:marge_fi_actu))]
end
end