【问题标题】:How to add a column into a tibble using tq_transmute()?如何使用 tq_transmute() 将列添加到 tibble?
【发布时间】:2020-03-15 06:12:05
【问题描述】:

我有以下 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

提前致谢!

【问题讨论】:

  • 你能检查一下代码吗?我在第一行收到一些错误Error in names(x) &lt;- value : 'names' attribute [8] must be the same length as the vector [1]
  • 我很抱歉。 dplyr 包是必需的。我已经更新了上面的代码。
  • 我确实加载了那个包,但错误在symbols &lt;- stockSymbols(exchange = c("AMEX", "NASDAQ", "NYSE"), sort.by = c("Exchange","Symbol"), quiet = FALSE) 你能显示tidyquant 版本吗
  • 你可以试试加入left_join(stock_returns_data, symbols %&gt;% select(symbol = Symbol, Sector))

标签: r tibble


【解决方案1】:

一个选项是left_join,在select之后只包含“symbols”数据集的“symbols”相关列

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

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2021-09-29
    • 2019-10-03
    • 2021-05-24
    • 2023-03-05
    • 2018-09-13
    • 2021-09-13
    • 2018-02-21
    • 2020-10-14
    相关资源
    最近更新 更多