Как добавить столбец в таблицу, используя tq_transmute ()? - PullRequest
1 голос
/ 15 марта 2020

У меня есть следующий R-скрипт, который я использую для получения символов всех американских акций и вычисления их доходности за некоторый период времени:

library(dplyr)
library(tidyverse)
library(tidyquant)

symbols <- stockSymbols(exchange = c("AMEX", "NASDAQ", "NYSE"), sort.by = c("Exchange","Symbol"), quiet = FALSE)

symbol_array = symbols$Symbol[c(0:5)]

start_date <- as.Date("2019-03-11")
end_date <- as.Date("2020-03-13")

stock_price_data = tq_get(symbol_array, from = start_date, to = end_date, get = "stock.prices")

stock_returns_data = stock_price_data %>%
  group_by(symbol) %>%
  tq_transmute(select = adjusted,
               mutate_fun = periodReturn,
               period = 'yearly',
               col_rename = 'returns')

stock_returns_data

Вывод этого скрипта:

# A tibble: 10 x 3
# Groups:   symbol [5]
   symbol date        returns
   <chr>  <date>        <dbl>
 1 AAMC   2019-12-31 -0.645  
 2 AAMC   2020-03-12  0.415  
 3 AAU    2019-12-31 -0.0167 
 4 AAU    2020-03-12 -0.508  
 5 ACU    2019-12-31  0.436  
 6 ACU    2020-03-12 -0.108  
 7 ACY    2019-12-31 -0.633  
 8 ACY    2020-03-12 -0.298  
 9 AE     2019-12-31  0.00138
10 AE     2020-03-12 -0.371 

Функция stockSymbols () возвращает следующее:

  Symbol                             Name LastSale MarketCap IPOyear           Sector                        Industry Exchange
1   AAMC Altisource Asset Management Corp  15.9300   $25.79M      NA          Finance                     Real Estate     AMEX
2    AAU           Almaden Minerals, Ltd.   0.2801   $31.29M    2015 Basic Industries                 Precious Metals     AMEX
3    ACU         Acme United Corporation.  21.6600   $72.61M    1988    Capital Goods Industrial Machinery/Components     AMEX
4    ACY                AeroCentury Corp.   2.8259    $4.37M      NA       Technology Diversified Commercial Services     AMEX
5     AE   Adams Resources & Energy, Inc.  23.0000   $97.42M      NA           Energy          Oil Refining/Marketing     AMEX

Вопрос: возможно ли включить «Сектор» в выходные данные возвращаемых данных?

Например:

# A tibble: 10 x 3
# Groups:   symbol [5]
   symbol date        returns  sector
   <chr>  <date>        <dbl>  <char>
 1 AAMC   2019-12-31 -0.645    Finance
 2 AAMC   2020-03-12  0.415    Finance
 3 AAU    2019-12-31 -0.0167   Basic Industries
 4 AAU    2020-03-12 -0.508    Basic Industries
 5 ACU    2019-12-31  0.436    Capital Goods
 6 ACU    2020-03-12 -0.108    Capital Goods
 7 ACY    2019-12-31 -0.633    Technology
 8 ACY    2020-03-12 -0.298    Technology
 9 AE     2019-12-31  0.00138  Energy
10 AE     2020-03-12 -0.371    Energy

Заранее спасибо!

1 Ответ

1 голос
/ 15 марта 2020

Один из вариантов - это left_join с набором данных символов после select, в котором только соответствующие столбцы из символов

library(dplyr)
left_join(stock_returns_data, symbols %>%
                                select(symbol = Symbol, Sector))
...