【发布时间】: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) <- value : 'names' attribute [8] must be the same length as the vector [1] -
我很抱歉。 dplyr 包是必需的。我已经更新了上面的代码。
-
我确实加载了那个包,但错误在
symbols <- stockSymbols(exchange = c("AMEX", "NASDAQ", "NYSE"), sort.by = c("Exchange","Symbol"), quiet = FALSE)你能显示tidyquant版本吗 -
你可以试试加入
left_join(stock_returns_data, symbols %>% select(symbol = Symbol, Sector))