I have two dataframes, toy1 and toy2. I would like to create a new dataframe, replacing the different values that are in toy2 in toy1 and keeping the same values (0) that are in toy1. Taking into account that there are different numbers of columns and rows. So in this example below, i want a result that is a dataframe of 208 columns and 2 rows.
toy1:
structure(list(revenue = 0, risk = 0, target_amount = 0, company_years = 0,
approved_commitee = 0, score = 0, reason_Capital_giro = 0,
reason_Compra_equip = 0, reason_Compra_estoque = 0, reason_Cons_div = 0,
reason_Expansao = 0, reason_Outros = 0, reason_working_capital = 0,
serasa_0 = 0, serasa_1 = 0, serasa_1.5 = 0, serasa_1.8 = 0,
serasa_2 = 0, serasa_2.6 = 0, serasa_3 = 0, serasa_3.1 = 0,
serasa_3.2 = 0, serasa_3.3 = 0, serasa_3.4 = 0, serasa_3.6 = 0,
serasa_3.8 = 0, serasa_4 = 0, serasa_4.2 = 0, serasa_4.4 = 0,
serasa_4.6 = 0, serasa_5 = 0, pontualidade_0.75neg = 0, pontualidade_0 = 0,
pontualidade_0.25 = 0, pontualidade_0.75 = 0, pontualidade_2.25 = 0,
pontualidade_2.5 = 0, pontualidade_2.75 = 0, pontualidade_3 = 0,
pontualidade_3.25 = 0, pontualidade_3.5 = 0, pontualidade_3.75 = 0,
pontualidade_4 = 0, pontualidade_4.25 = 0, pontualidade_4.5 = 0,
pontualidade_4.75 = 0, pontualidade_5 = 0, qualidade_divida_0 = 0,
qualidade_divida_1 = 0, qualidade_divida_1.4 = 0, qualidade_divida_1.6 = 0,
qualidade_divida_2 = 0, qualidade_divida_2.2 = 0, qualidade_divida_2.8 = 0,
qualidade_divida_3.4 = 0, qualidade_divida_3.5 = 0, qualidade_divida_3.7 = 0,
qualidade_divida_3.8 = 0, qualidade_divida_4 = 0, qualidade_divida_4.2 = 0,
qualidade_divida_4.5 = 0, qualidade_divida_4.6 = 0, qualidade_divida_4.8 = 0,
qualidade_divida_5 = 0, bancabilidade_0 = 0, bancabilidade_0.1 = 0,
bancabilidade_0.2 = 0, bancabilidade_0.5 = 0, bancabilidade_0.6 = 0,
bancabilidade_0.7 = 0, bancabilidade_0.8 = 0, bancabilidade_1 = 0,
bancabilidade_1.2 = 0, bancabilidade_1.3 = 0, bancabilidade_1.4 = 0,
bancabilidade_1.5 = 0, bancabilidade_1.6 = 0, bancabilidade_1.7 = 0,
bancabilidade_1.8 = 0, bancabilidade_2 = 0, bancabilidade_2.1 = 0,
bancabilidade_2.2 = 0, bancabilidade_2.3 = 0, bancabilidade_2.4 = 0,
bancabilidade_2.5 = 0, bancabilidade_2.6 = 0, bancabilidade_2.7 = 0,
bancabilidade_2.8 = 0, bancabilidade_3 = 0, bancabilidade_3.1 = 0,
bancabilidade_3.2 = 0, bancabilidade_3.3 = 0, bancabilidade_3.4 = 0,
bancabilidade_3.5 = 0, bancabilidade_3.6 = 0, bancabilidade_3.8 = 0,
bancabilidade_3.9 = 0, bancabilidade_4 = 0, bancabilidade_4.1 = 0,
bancabilidade_4.2 = 0, bancabilidade_4.4 = 0, bancabilidade_4.5 = 0,
bancabilidade_4.6 = 0, bancabilidade_4.7 = 0, bancabilidade_4.8 = 0,
bancabilidade_5 = 0, alavancagem_0 = 0, alavancagem_0.2 = 0,
alavancagem_1 = 0, alavancagem_1.6 = 0, alavancagem_2 = 0,
alavancagem_2.4 = 0, alavancagem_2.5 = 0, alavancagem_3 = 0,
alavancagem_3.4 = 0, alavancagem_4 = 0, alavancagem_5 = 0,
porte_0 = 0, porte_1 = 0, porte_1.4 = 0, porte_2 = 0, porte_2.4 = 0,
porte_2.8 = 0, porte_3 = 0, porte_3.2 = 0, porte_3.6 = 0,
porte_4 = 0, porte_4.4 = 0, porte_4.6 = 0, porte_4.8 = 0,
porte_5 = 0, receita_recorrencias_0.6 = 0, receita_recorrencias_0.8 = 0,
receita_recorrencias_1 = 0, receita_recorrencias_1.4 = 0,
receita_recorrencias_2 = 0, receita_recorrencias_2.4 = 0,
receita_recorrencias_2.6 = 0, receita_recorrencias_3 = 0,
receita_recorrencias_3.2 = 0, receita_recorrencias_3.4 = 0,
receita_recorrencias_3.8 = 0, receita_recorrencias_4 = 0,
receita_recorrencias_4.4 = 0, receita_recorrencias_5 = 0,
respaldo_patrimonio_0 = 0, respaldo_patrimonio_0.4 = 0, respaldo_patrimonio_0.5 = 0,
respaldo_patrimonio_0.7 = 0, respaldo_patrimonio_0.75 = 0,
respaldo_patrimonio_0.8 = 0, respaldo_patrimonio_1 = 0, respaldo_patrimonio_1.2 = 0,
respaldo_patrimonio_1.3 = 0, respaldo_patrimonio_1.4 = 0,
respaldo_patrimonio_1.5 = 0, respaldo_patrimonio_1.7 = 0,
respaldo_patrimonio_1.9 = 0, respaldo_patrimonio_2.2 = 0,
respaldo_patrimonio_2.3 = 0, respaldo_patrimonio_2.6 = 0,
respaldo_patrimonio_3 = 0, respaldo_patrimonio_3.2 = 0, respaldo_patrimonio_3.5 = 0,
respaldo_patrimonio_3.6 = 0, respaldo_patrimonio_4 = 0, respaldo_patrimonio_4.4 = 0,
respaldo_patrimonio_5 = 0, reputacional_1 = 0, reputacional_2 = 0,
reputacional_2.5 = 0, reputacional_3 = 0, reputacional_3.5 = 0,
reputacional_3.65 = 0, reputacional_4 = 0, reputacional_5 = 0,
impacto_covid_1 = 0, impacto_covid_1.5 = 0, impacto_covid_2 = 0,
impacto_covid_2.5 = 0, impacto_covid_3 = 0, impacto_covid_3.5 = 0,
impacto_covid_3.65 = 0, impacto_covid_4 = 0, impacto_covid_5 = 0,
business_sector_Comercio = 0, business_sector_Industria = 0,
business_sector_Servicos = 0, state_AC = 0, state_AM = 0,
state_BA = 0, state_CE = 0, state_DF = 0, state_GO = 0, state_MG = 0,
state_MS = 0, state_MT = 0, state_PA = 0, state_PB = 0, state_PE = 0,
state_PR = 0, state_RJ = 0, state_RS = 0, state_SC = 0, state_SP = 0,
state_TO = 0, decision_motor_approved = 0, decision_motor_denied = 0), row.names = 1L, class = "data.frame")
toy2
structure(list(revenue = c(4397487.34, 198019.75), risk = c(12137650.06,
469506.24), target_amount = c(150000, 1e 05), company_years = c(18,
9), approved_commitee = structure(c(2L, 2L), .Label = c("NO",
"YES"), class = "factor"), score = c(134, 128), reason_Compra_equip = c(1,
1), serasa_1.8 = c(1, 1), pontualidade_0.25 = c(1, 1), qualidade_divida_1 = c(1,
1), bancabilidade_0.2 = c(1, 1), alavancagem_1.6 = c(1L, 1L),
porte_4.6 = c(1, 1), receita_recorrencias_3 = c(1, 1), respaldo_patrimonio_0.5 = c(1,
1), reputacional_5 = c(1, 1), impacto_covid_3 = c(1, 1),
business_sector_Comercio = c(1, 1), state_GO = c(1, 1)), row.names = c(10L,
12L), class = "data.frame")
CodePudding user response:
Check this :
a <- which(names(toy1) %in% names(toy2))
toy1[2,] <- 0
toy1[a] <- toy2
toy1
has only 1 row while toy2
has two. So I added an extra 0 row in toy1
.
CodePudding user response:
Because there is a cbind.data.frame
method, you could cbind
the portion of toy1
that has non-matching column names to all of toy2
. R does recycling of needed rows in this situation. Admittedly the column order might not be the same. It could be restored to the original ordering if needed.
toy1.2 <-cbind(toy1[ ! names(toy1) %in% names(toy2) ], toy2 )
toy1.2
#---------------------------
reason_Capital_giro reason_Compra_estoque reason_Cons_div reason_Expansao reason_Outros reason_working_capital
1 0 0 0 0 0 0
2 0 0 0 0 0 0
serasa_0 serasa_1 serasa_1.5 serasa_2 serasa_2.6 serasa_3 serasa_3.1 serasa_3.2 serasa_3.3 serasa_3.4 serasa_3.6
1 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
#snipped a bunch of rows, leaving the new data from toy2
revenue risk target_amount company_years approved_commitee score reason_Compra_equip serasa_1.8
1 4397487.3 12137650.1 150000 18 YES 134 1 1
2 198019.8 469506.2 100000 9 YES 128 1 1
pontualidade_0.25 qualidade_divida_1 bancabilidade_0.2 alavancagem_1.6 porte_4.6 receita_recorrencias_3
1 1 1 1 1 1 1
2 1 1 1 1 1 1
respaldo_patrimonio_0.5 reputacional_5 impacto_covid_3 business_sector_Comercio state_GO
1 1 1 1 1 1
2 1 1 1 1 1