es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo renombrar una columna con tq_mutate

Cuando uso tq_transmute, puedo renombrar todas las columnas. Cuando uso tq_mutate, solo las primeras 2 columnas se renombran. Las últimas dos columnas permanecen como están. ¿Es esto una limitación o me falta algo para solucionar tq_mutate?

En la primera salida a continuación, verá que “TR_high”,”TR_Low” no se imprime como las últimas 2 columnas.

#https://www.rpubs.com/stephenodea54/776350
# Carga tidyquant, lubridate, xts, quantmod, TTR y PerformanceAnalytics
library(tidyverse)
library(tidyquant) 
library(ggthemes)
startdt <- "2021-02-01"
AMC <- tq_get(
  "AMC",
  get = "stock.prices",
  from = startdt
)
test1<-AMC %>% 
  tq_mutate(select = c("high", "low", "close"), n=14, mutate_fun = ATR, col_rename = c("TrueRange","ATR","TR_high","TR_Low"))  


head(test1)

# A tibble: 6 x 12
  symbol date        open  high   low close    volume adjusted TrueRange   ATR ATR..1 ATR..2
  <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>     <dbl> <dbl>  <dbl>  <dbl>
1 AMC    2021-02-01 17    17.2  12.9  13.3  434608000    13.3      NA       NA   NA     NA   
2 AMC    2021-02-02  9.48 10.1   6     7.82 462775900     7.82      7.3     NA   13.3     6   
3 AMC    2021-02-03  8.85  9.77  7.89  8.97 221405100     8.97      1.95    NA    9.77    7.82

Ahora, estoy usando una función diferente y las 4 columnas están renombradas correctamente.

“`R
test2<-AMC %>%
tq_transmute(select = c("high", "low", "close"), n=14, mutate_fun = ATR,col_rename = c("TrueRange","ATR","TR_high","TR_Low"))<br />
head(test2)

<h1>A tibble: 6 x 5</h1>

date TrueRange ATR TR_high TR_Low
<date> <dbl> <dbl> <dbl> <dbl>
1 2021-02-01 NA NA NA NA<br />
2 2021-02-02 7.3 NA 13.3 6<br />
3 2021-02-03 1.95 NA 9.77 7.82

“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece ser una limitación de la función tq_mutate que solo se están renombrando las dos primeras columnas. Esto probablemente se debe al hecho de que tq_mutate solo agrega columnas al marco de datos original, en lugar de crear uno nuevo como lo hace tq_transmute. Una solución alternativa para esto sería utilizar la función rename() de dplyr después de usar tq_mutate para renombrar las columnas restantes.

Comments are closed.