<div dir="ltr"><b>César</b>,<div><br></div><div>Bom dia.</div><div><br></div><div>Eu reconheço que, sob o aspecto de banco de dados, não faz sentido ter a mescla de proporções com totais absolutos de votos válidos. E que também acabo duplicando os valores no cruzamento. Meu exemplo não foi bom neste sentido.</div><div><br></div><div>Ainda assim, a dúvida continua sendo como fazer a função reconhecer a variável que eu gostaria de levar para o cruzamento além da variável chave para o cruzamento (neste caso a variavel <b>Regiao</b>).</div><div><br></div><div>Assim, ignorando estes problemas de bancos de dados, o que preciso fazer para passar o parâmetro da função de forma correta? Você(s) pode(m) me apontar o que estou fazendo de errado nas versões da função <b>consolida</b>?<br></div><div><br></div><div>Grato mais uma vez pela sua atenção,</div><div><br></div><div>Bruno César Pasquini</div><div>Estatístico</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail-m_5156656001368299297gmail_attr">Em ter, 15 de jan de 2019 às 22:31, Cesar Rabak <<a href="mailto:cesar.rabak@gmail.com" target="_blank">cesar.rabak@gmail.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Bruno,<div><br></div><div><i>Acho</i> que estou começando a entender a sua demanda, mas para ter certeza é necessário ainda elicitar umas coisinhas:</div><div><br></div><div>a) No exemplo que você passa como resultado desejado você tem uma mescla de proporções com totais absolutos dos votos para a nova coluna oriunda da operação de mescla;</div><div><br></div><div>b) Como você usa Região como a chave comum entre as duas tabelas, os valores de contagem de votos são repetidos pois na tabela <font face="monospace, monospace">perc_validos</font><span style="font-family:tahoma,sans-serif">  a região é subdividida por UF enquanto na tabela </span><font face="monospace, monospace">votos_regiao</font><span style="font-family:tahoma,sans-serif"> há apenas o agregado e não a quebra por UF.</span></div><div><span style="font-family:tahoma,sans-serif"><br></span></div><div><span style="font-family:tahoma,sans-serif">O resultado dessa forma faz sentido para você e é exatamente o que você deseja da operação da sua função </span><font face="monospace, monospace">Consolida</font><span style="font-family:tahoma,sans-serif">?</span></div><div><span style="font-family:tahoma,sans-serif"><br></span></div><div><span style="font-family:tahoma,sans-serif">HTH</span></div><div><span style="font-family:tahoma,sans-serif">--</span></div><div><span style="font-family:tahoma,sans-serif">Cesar Rabak</span></div><div><span style="font-family:tahoma,sans-serif"><br></span></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jan 15, 2019 at 8:01 AM Bruno César Pasquini por (R-br) <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><b>Daniel</b> e <b>César</b>,<div><br></div><div>Agradeço muito o terem tentado rodar meu código...</div><div><br></div><div>Arranjei este exemplo para tentar resolver um problema que estou tendo com dados da indústria química alemã onde trabalho, dados que não posso expor aqui. Arranjei um exemplo fake (ainda que com dados reais) para pedir a ajuda no processamento da função.<br></div><div><br></div><div>Minha expectativa é a de conseguir que o R selecione apenas a variável chave para o cruzamento (<b>Regiao</b>) mais alguma outra (uma das colunas com contagem de votos) cuja interpretação não estou conseguindo acertar no meu código R.</div><div><br></div><div>Como o problema é este, eu deixei os nomes das demais variáveis propositalmente diferentes, eu não espero mesmo que o R associe uma variável chamada "Ciro" com outra que se chama "Ciro Gomes" (a menos que eu o faça manualmente depois...).</div><div><br></div><div>O que eu gostaria de obter neste cruzamento a ser feito pela função é algo como (vamos supor que peça a coluna dos votos dos demais candidatos):</div><div><br></div><div>
        
        
        



<table style="font-family:"Liberation Sans";font-size:x-small" cellspacing="0" border="0">
        <colgroup width="95"></colgroup>
        <colgroup width="137"></colgroup>
        <colgroup width="71"></colgroup>
        <colgroup width="57"></colgroup>
        <colgroup width="52" span="2"></colgroup>
        <colgroup width="132"></colgroup>
        <tbody><tr>
                <td style="font-family:"Liberation Sans"" height="17" align="center">Regiao</td>
                <td style="font-family:"Liberation Sans"" align="center">Estado</td>
                <td style="font-family:"Liberation Sans"" align="center">Bolsonaro</td>
                <td style="font-family:"Liberation Sans"" align="center">Haddad</td>
                <td style="font-family:"Liberation Sans"" align="center">Ciro</td>
                <td style="font-family:"Liberation Sans"" align="center">Outros</td>
                <td style="font-family:"Liberation Sans"" align="center">'Demais Candidatos'</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Centro-Oeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Distrito Federal'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.5837</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1187</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1660</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1316</td>
                <td style="font-family:"Liberation Sans"" align="right">952142</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Centro-Oeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Goias'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.5724</td>
                <td style="font-family:"Liberation Sans"" align="left">0.2186</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0860</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1230</td>
                <td style="font-family:"Liberation Sans"" align="right">952142</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Centro-Oeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Mato Grosso'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.6004</td>
                <td style="font-family:"Liberation Sans"" align="left">0.2476</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0559</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0961</td>
                <td style="font-family:"Liberation Sans"" align="right">952142</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Centro-Oeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Mato Grosso do Sul'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.5506</td>
                <td style="font-family:"Liberation Sans"" align="left">0.2387</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0804</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1304</td>
                <td style="font-family:"Liberation Sans"" align="right">952142</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Exterior'</td>
                <td style="font-family:"Liberation Sans"" align="left">''</td>
                <td style="font-family:"Liberation Sans"" align="left">0.5879</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1010</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1452</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1659</td>
                <td style="font-family:"Liberation Sans"" align="right">32078</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Nordeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Alagoas'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.3440</td>
                <td style="font-family:"Liberation Sans"" align="left">0.4475</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1012</td>
                <td style="font-family:"Liberation Sans"" align="left">0.1072</td>
                <td style="font-family:"Liberation Sans"" align="right">1894092</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Nordeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Bahia'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.2341</td>
                <td style="font-family:"Liberation Sans"" align="left">0.6028</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0941</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0690</td>
                <td style="font-family:"Liberation Sans"" align="right">1894092</td>
        </tr>
        <tr>
                <td style="font-family:"Liberation Sans"" height="17" align="left">'Nordeste'</td>
                <td style="font-family:"Liberation Sans"" align="left">'Ceara'</td>
                <td style="font-family:"Liberation Sans"" align="left">0.2174</td>
                <td style="font-family:"Liberation Sans"" align="left">0.3312</td>
                <td style="font-family:"Liberation Sans"" align="left">0.4095</td>
                <td style="font-family:"Liberation Sans"" align="left">0.0419</td>
                <td style="font-family:"Liberation Sans"" align="right">1894092</td>
        </tr>
</tbody></table></div><div>(...)</div><div>É a tabela <b>perc_validos</b> com o acréscimo da coluna "Demais Candidatos".<br></div><div><br></div><div>Meu desafio é separar, dentre as várias colunas na tabela <b>votos_regiao</b>, apenas a coluna chave (<b>Regiao</b>) e a coluna que eu apontar como parametro na função (neste exemplo acima a "Demais Candidatos"). Da maneira que coloquei (as 3 versões da função <b>consolida</b>), nenhuma delas tem funcionado e é nisso que eu preciso da ajuda para entender no que estou errando. O fato de gerar duplicidades e de que (no exemplo acima) a coluna "Outros" não se relacionar com a coluna "Demais Candidatos" nao são problema, eu tratarei na sequência do meu código. Para mim o importante é acertar a seleção para o cruzamento...</div><div><br></div><div>Assim, como eu faço para selecionar uma das colunas com contagem de votos além da variável chave nas funções? O que eu estou fazendo de errado?</div><div><br></div><div>Grato mais uma vez pela atenção de vocês,</div><div><br></div><div>Bruno César Pasquini</div><div>Estatístico.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">Em sex, 11 de jan de 2019 às 23:37, Cesar Rabak por (R-br) <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Bruno, apenas uma dúvida: como você espera fazer um <i>merge</i> em dois conjuntos de dados cujas "chaves" (no data.table, que um dataframe) as variáveis ou colunas... ou sendo mais simplório: como você espera que o SW estatístico <i>saiba</i> que 

<font face="monospace, monospace">Bolsonaro</font><span style="font-family:tahoma,sans-serif"> na data.table </span>

<font face="monospace, monospace">perc_validos</font><span style="font-family:tahoma,sans-serif"> é a <i>mesma coisa</i> que </span><font face="monospace, monospace">'Jair Bolsonaro'</font><span style="font-family:tahoma,sans-serif"> na </span><font face="monospace, monospace">votos_regiao</font><font face="tahoma, sans-serif"> <span style="margin-right:0.2ex;margin-left:0.2ex;height:24px;width:24px">🤔</span>??</font><div><font face="tahoma, sans-serif"><br></font></div><div><font face="tahoma, sans-serif">HTH</font></div><div><font face="tahoma, sans-serif">--</font></div><div><font face="tahoma, sans-serif">Cesar Rabak</font></div><div><font face="tahoma, sans-serif"><br></font></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Jan 11, 2019 at 9:17 AM Bruno César Pasquini por (R-br) <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">PessoALL, bom dia!<br><br>Estou com dificuldade em passar os valores de uma variável string para uma função do R de forma que esta função a interprete corretamente.<br><br>Por exemplo, para indicar qual coluna eu quero que a função selecione para um cruzamento de 2 data.tables (acho melhor que usar data.frames pela melhor performance do data.table)... Eu poderia levar a tabela inteira para o cruzamento, mas depois teria que deletar as demais colunas manualmente, gostaria de resolver com a função conforme o exemplo abaixo.<br><br>Construí este exemplo baseado nos resultados do primeiro turno das últimas eleições presidenciais. Normalmente eu importaria as tabelas, mas eu as declaro aqui para a devida reprodução do código.</div><div dir="ltr">
<div dir="ltr">Fonte: <a href="https://pt.wikipedia.org/wiki/Resultados_da_eleição_presidencial_no_Brasil_em_2018#Primeiro_turno_3" target="_blank">https://pt.wikipedia.org/wiki/Resultados_da_eleição_presidencial_no_Brasil_em_2018#Primeiro_turno_3</a></div><div dir="ltr"><br></div>Meu propósito é entender o que estou fazendo de errado (ou deixando de fazer...), não estou propondo um debate político-ideológico que foge ao escopo desta lista...</div><div dir="ltr"><br></div><div dir="ltr">Especificamente, eu não consigo fazer a função "<b>consolida</b>" (na verdade as versões 1, 2 e 3 desta função) interprete(m) o parâmetro "<b>Candidato</b>" corretamente.<br>Eu tento usar o parâmetro sozinho e com as funções "<b>substitute</b>" e "<b>eval</b>", mas não consigo levar a coluna com os números de votação do candidato por região para o cruzamento. Sim, eu sei que o cruzamento como o desenhei vai gerar duplicidade, mas o que preciso é que o cruzamento "funcione"...<br><br>Vocês podem me ajudar a entender o que estou fazendo de errado?<br><br>Muito grato pela atenção de cada um(a),<br>Bruno César Pasquini<br>Estatístico</div><div dir="ltr"><br></div><span style="font-family:tahoma,sans-serif"></span></div><span style="font-family:tahoma,sans-serif">####### Codigo Reprodutivel...<br><br>library(data.table)<br><br>### Percentual de Votos Validos nos estados e no exterior...<br>perc_validos <- data.table(Regiao = c('Centro-Oeste', 'Centro-Oeste', 'Centro-Oeste', 'Centro-Oeste', 'Exterior', 'Nordeste', 'Nordeste', 'Nordeste', 'Nordeste', 'Nordeste', 'Nordeste', 'Nordeste', 'Nordeste', 'Nordeste', 'Norte', 'Norte', 'Norte', 'Norte', 'Norte', 'Norte', 'Norte', 'Sudeste', 'Sudeste', 'Sudeste', 'Sudeste', 'Sul', 'Sul', 'Sul'),<br>                           Estado = c('Distrito Federal', 'Goias', 'Mato Grosso', 'Mato Grosso do Sul', '', 'Alagoas', 'Bahia', 'Ceara', 'Maranhao', 'Paraiba', 'Pernambuco', 'Piaui', 'Rio Grande do Norte', 'Sergipe', 'Acre', 'Amapa', 'Amazonas', 'Para', 'Rondonia', 'Roraima', 'Tocantins', 'Espirito Santo', 'Minas Gerais', 'Rio de Janeiro', 'Sao Paulo', 'Parana', 'Rio Grande do Sul', 'Santa Catarina'),<br>                           Bolsonaro = c(0.5837, 0.5724, 0.6004, 0.5506, 0.5879, 0.3440, 0.2341, 0.2174, 0.2428, 0.3130, 0.3057, 0.1876, 0.3021, 0.2721, 0.6224, 0.4074, 0.4348, 0.3619, 0.6224, 0.6297, 0.4464, 0.5476, 0.4831, 0.5979, 0.5300, 0.5689, 0.5263, 0.6582),<br>                           Haddad = c(0.1187, 0.2186, 0.2476, 0.2387, 0.1010, 0.4475, 0.6028, 0.3312, 0.6126, 0.4546, 0.4887, 0.6340, 0.4119, 0.5009, 0.1853, 0.3277, 0.4030, 0.4139, 0.2036, 0.1785, 0.4112, 0.2420, 0.2765, 0.1469, 0.1642, 0.1970, 0.2281, 0.1513),<br>                           Ciro = c(0.1660, 0.0860, 0.0559, 0.0804, 0.1452, 0.1012, 0.0941, 0.4095, 0.0839, 0.1675, 0.1356, 0.1142, 0.2231, 0.1302, 0.0517, 0.1234, 0.0750, 0.1003, 0.0603, 0.0536, 0.0717, 0.0954, 0.1164, 0.1522, 0.1135, 0.0831, 0.1137, 0.0668),<br>                           Outros = c(0.1316, 0.1230, 0.0961, 0.1304, 0.1659, 0.1072, 0.0690, 0.0419, 0.0606, 0.0650, 0.0700, 0.0642, 0.0631, 0.0967, 0.1405, 0.1417, 0.0873, 0.1237, 0.1739, 0.1383, 0.0707, 0.1149, 0.1241, 0.1030, 0.1922, 0.1510, 0.1318, 0.1236)<br>                           )<br>### Analisando o data.table perc_validos...<br>perc_validos; class(perc_validos); str(perc_validos); dim(perc_validos)<br><br>### Total de Votos Validos por regiao e no exterior...<br>votos_regiao <- data.table(Regiao = c('Centro-Oeste', 'Exterior', 'Nordeste', 'Norte', 'Sudeste', 'Sul'),<br>                           'Jair Bolsonaro' = c(4555415, 113690, 7453186, 3785038, 23915925, 9453736),<br>                           'Fernando Haddad' = c(1642054, 19540, 14583334, 3211002, 8623232, 3262843),<br>                           'Ciro Gomes' = c(750776, 28073, 4892961, 748170, 5425104, 1499282),<br>                           'Demais Candidatos' = c(952142, 32078, 1894092, 982103, 6968773, 2258047)<br>                           )<br>### Analisando o data.table votos_regiao...<br>votos_regiao; class(votos_regiao); str(votos_regiao); dim(votos_regiao)<br><br>### Fazendo o cruzamento... Ou pelo menos tentando...<br>consolida1 <- function(Candidato) {<br>   temporario <- merge(x = perc_validos,<br>                       y = votos_regiao[, .(Regiao,<br>                                            Candidato)],<br>                       by = "Regiao",<br>                       all.x = TRUE,<br>                       sort = TRUE)<br>   return(temporario)<br>}<br>consolida1(Candidato = "Jair Bolsonaro")<br><br>consolida2 <- function(Candidato) {<br>   temporario <- merge(x = perc_validos,<br>                       y = votos_regiao[, .(Regiao,<br>                                            substitute(Candidato))],<br>                       by = "Regiao",<br>                       all.x = TRUE,<br>                       sort = TRUE)<br>   return(temporario)<br>}<br>consolida2(Candidato = "Ciro Gomes")<br><br>consolida3 <- function(Candidato) {<br>   temporario <- merge(x = perc_validos,<br>                       y = votos_regiao[, .(Regiao,<br>                                            eval(Candidato))],<br>                       by = "Regiao",<br>                       all.x = TRUE,<br>                       sort = TRUE)<br>   return(temporario)<br>}<br>consolida3(Candidato = "Fernando Haddad")</span></div><div dir="ltr"><br></div></div>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</blockquote></div>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</blockquote></div>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</blockquote></div>
</blockquote></div>