*César*, Bom dia.
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. 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 *Regiao*). 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 *consolida*? Grato mais uma vez pela sua atenção, Bruno César Pasquini Estatístico Em ter, 15 de jan de 2019 às 22:31, Cesar Rabak <cesar.ra...@gmail.com> escreveu: > Bruno, > > *Acho* que estou começando a entender a sua demanda, mas para ter certeza > é necessário ainda elicitar umas coisinhas: > > 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; > > 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 perc_validos a > região é subdividida por UF enquanto na tabela votos_regiao há apenas o > agregado e não a quebra por UF. > > O resultado dessa forma faz sentido para você e é exatamente o que você > deseja da operação da sua função Consolida? > > HTH > -- > Cesar Rabak > > > On Tue, Jan 15, 2019 at 8:01 AM Bruno César Pasquini por (R-br) < > r-br@listas.c3sl.ufpr.br> wrote: > >> *Daniel* e *César*, >> >> Agradeço muito o terem tentado rodar meu código... >> >> 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. >> >> Minha expectativa é a de conseguir que o R selecione apenas a variável >> chave para o cruzamento (*Regiao*) mais alguma outra (uma das colunas >> com contagem de votos) cuja interpretação não estou conseguindo acertar no >> meu código R. >> >> 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...). >> >> 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): >> >> Regiao Estado Bolsonaro Haddad Ciro Outros 'Demais Candidatos' >> 'Centro-Oeste' 'Distrito Federal' 0.5837 0.1187 0.1660 0.1316 952142 >> 'Centro-Oeste' 'Goias' 0.5724 0.2186 0.0860 0.1230 952142 >> 'Centro-Oeste' 'Mato Grosso' 0.6004 0.2476 0.0559 0.0961 952142 >> 'Centro-Oeste' 'Mato Grosso do Sul' 0.5506 0.2387 0.0804 0.1304 952142 >> 'Exterior' '' 0.5879 0.1010 0.1452 0.1659 32078 >> 'Nordeste' 'Alagoas' 0.3440 0.4475 0.1012 0.1072 1894092 >> 'Nordeste' 'Bahia' 0.2341 0.6028 0.0941 0.0690 1894092 >> 'Nordeste' 'Ceara' 0.2174 0.3312 0.4095 0.0419 1894092 >> (...) >> É a tabela *perc_validos* com o acréscimo da coluna "Demais Candidatos". >> >> Meu desafio é separar, dentre as várias colunas na tabela *votos_regiao*, >> apenas a coluna chave (*Regiao*) 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 *consolida*), 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... >> >> 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? >> >> Grato mais uma vez pela atenção de vocês, >> >> Bruno César Pasquini >> Estatístico. >> >> >> Em sex, 11 de jan de 2019 às 23:37, Cesar Rabak por (R-br) < >> r-br@listas.c3sl.ufpr.br> escreveu: >> >>> Bruno, apenas uma dúvida: como você espera fazer um *merge* 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 *saiba* que Bolsonaro na data.table perc_validos é a *mesma >>> coisa* que 'Jair Bolsonaro' na votos_regiao 🤔?? >>> >>> HTH >>> -- >>> Cesar Rabak >>> >>> >>> On Fri, Jan 11, 2019 at 9:17 AM Bruno César Pasquini por (R-br) < >>> r-br@listas.c3sl.ufpr.br> wrote: >>> >>>> PessoALL, bom dia! >>>> >>>> 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. >>>> >>>> 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. >>>> >>>> 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. >>>> Fonte: >>>> https://pt.wikipedia.org/wiki/Resultados_da_eleição_presidencial_no_Brasil_em_2018#Primeiro_turno_3 >>>> >>>> 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... >>>> >>>> Especificamente, eu não consigo fazer a função "*consolida*" (na >>>> verdade as versões 1, 2 e 3 desta função) interprete(m) o parâmetro " >>>> *Candidato*" corretamente. >>>> Eu tento usar o parâmetro sozinho e com as funções "*substitute*" e " >>>> *eval*", 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"... >>>> >>>> Vocês podem me ajudar a entender o que estou fazendo de errado? >>>> >>>> Muito grato pela atenção de cada um(a), >>>> Bruno César Pasquini >>>> Estatístico >>>> >>>> ####### Codigo Reprodutivel... >>>> >>>> library(data.table) >>>> >>>> ### Percentual de Votos Validos nos estados e no exterior... >>>> 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'), >>>> 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'), >>>> 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), >>>> 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), >>>> 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), >>>> 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) >>>> ) >>>> ### Analisando o data.table perc_validos... >>>> perc_validos; class(perc_validos); str(perc_validos); dim(perc_validos) >>>> >>>> ### Total de Votos Validos por regiao e no exterior... >>>> votos_regiao <- data.table(Regiao = c('Centro-Oeste', 'Exterior', >>>> 'Nordeste', 'Norte', 'Sudeste', 'Sul'), >>>> 'Jair Bolsonaro' = c(4555415, 113690, >>>> 7453186, 3785038, 23915925, 9453736), >>>> 'Fernando Haddad' = c(1642054, 19540, >>>> 14583334, 3211002, 8623232, 3262843), >>>> 'Ciro Gomes' = c(750776, 28073, 4892961, >>>> 748170, 5425104, 1499282), >>>> 'Demais Candidatos' = c(952142, 32078, >>>> 1894092, 982103, 6968773, 2258047) >>>> ) >>>> ### Analisando o data.table votos_regiao... >>>> votos_regiao; class(votos_regiao); str(votos_regiao); dim(votos_regiao) >>>> >>>> ### Fazendo o cruzamento... Ou pelo menos tentando... >>>> consolida1 <- function(Candidato) { >>>> temporario <- merge(x = perc_validos, >>>> y = votos_regiao[, .(Regiao, >>>> Candidato)], >>>> by = "Regiao", >>>> all.x = TRUE, >>>> sort = TRUE) >>>> return(temporario) >>>> } >>>> consolida1(Candidato = "Jair Bolsonaro") >>>> >>>> consolida2 <- function(Candidato) { >>>> temporario <- merge(x = perc_validos, >>>> y = votos_regiao[, .(Regiao, >>>> substitute(Candidato))], >>>> by = "Regiao", >>>> all.x = TRUE, >>>> sort = TRUE) >>>> return(temporario) >>>> } >>>> consolida2(Candidato = "Ciro Gomes") >>>> >>>> consolida3 <- function(Candidato) { >>>> temporario <- merge(x = perc_validos, >>>> y = votos_regiao[, .(Regiao, >>>> eval(Candidato))], >>>> by = "Regiao", >>>> all.x = TRUE, >>>> sort = TRUE) >>>> return(temporario) >>>> } >>>> consolida3(Candidato = "Fernando Haddad") >>>> >>>> _______________________________________________ >>>> R-br mailing list >>>> R-br@listas.c3sl.ufpr.br >>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br >>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça >>>> código mínimo reproduzível. >>> >>> _______________________________________________ >>> R-br mailing list >>> R-br@listas.c3sl.ufpr.br >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça >>> código mínimo reproduzível. >> >> _______________________________________________ >> R-br mailing list >> R-br@listas.c3sl.ufpr.br >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça >> código mínimo reproduzível. > >
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.