Como posso manipular colunas de quadro de dados com valores diferentes de um vetor externo (com dplyr)
Em R, eu gostaria de manipular (digamos, multiplicar) as colunas data.frame com valores nomeados apropriadamente armazenados em um vetor (ou data.frame, se for mais fácil).
Digamos, eu quero primeirosummarise
as variáveisdisp
, hp
ewt
demtcars
conjunto de dados.
vars <- c("disp", "hp", "wt")
mtcars %>%
summarise_at(vars, funs(sum(.))
(lançar umgroup_by(cyl)
na mistura ou usemutate_at
se você quiser ter mais linhas)
Agora, gostaria de multiplicar cada uma das colunas resultantes por um valor específico, fornecido por
multiplier <- c("disp" = 2, "hp" = 3, "wt" = 4)
É possível fazer referência a eles dentro dosummarise_at
função?
O resultado deve ficar assim (e eu não quero ter que me referir diretamente aos nomes das variáveis ao chegar lá):
disp hp wt
14766.2 14082 411.808
ATUALIZAR:
Talvez meu MWE fosse mínimo demais. Digamos que eu queira fazer a mesma operação com um data.frame agrupado porcyl
mtcars %>%
group_by(cyl) %>%
summarise_at(vars, sum)
O resultado deve ser assim:
cyl disp hp wt
1 4 2313.0 2727 100.572
2 6 2566.4 2568 87.280
3 8 9886.8 8787 223.956
ATUALIZAÇÃO 2:
Talvez eu também não tenha sido suficientemente explícito aqui, mas as colunas no data.frame devem ser multiplicadas pelos respectivos valores no vetor (e apenas pelas colunas mencionadas no vetor), por exemplo,disp
deve ser multiplicado por 2,hp
por 3 ewt
por 4, todas as outras variáveis (por exemplo,cyl
) deve permanecer intocado pela multiplicação.