r - 如何使用 csv 查找文件替换数据集中的列名
问题描述
我正在使用RStudio
并且正在运行以下R
代码(检索股票价格):
if (!require(BatchGetSymbols)) install.packages('BatchGetSymbols')
library(BatchGetSymbols)
# set dates
first.date <- Sys.Date() - 60
last.date <- Sys.Date()
freq.data <- 'daily'
# set tickers
tickers <- c('AAPL','BIDU')
l.out <- BatchGetSymbols(tickers = tickers,
first.date = first.date,
last.date = last.date,
freq.data = freq.data,
cache.folder = file.path(tempdir(),
'BGS_Cache') ) # cache in tempdir()
library(ggplot2)
p <- ggplot(l.out$df.tickers, aes(x = ref.date, y = price.close))
p <- p + geom_line()
p <- p + facet_wrap(~ticker, scales = 'free_y')
print(p)
的输出p
如下所示:
我希望ggplot2
图表显示公司名称而不是股票代码。(即APPLE代替“AAPL”,BAIDU代替“BIDU”)。
我有一个csv
文件,其中包含代码名称(股票代码)及其相关公司名称的列表。如何用公司名称替换代码,以便它们显示在我的ggplot2
图表中?
我尝试了以下方法(仍然给出与以前相同的图表):
if (!require(BatchGetSymbols)) install.packages('BatchGetSymbols')
library(BatchGetSymbols)
# set dates
first.date <- Sys.Date() - 60
last.date <- Sys.Date()
freq.data <- 'daily'
# set tickers
tickers <- c('AAPL','BIDU')
l.out <- BatchGetSymbols(tickers = tickers,
first.date = first.date,
last.date = last.date,
freq.data = freq.data,
cache.folder = file.path(tempdir(),
'BGS_Cache') ) # cache in tempdir()
codes_list <- read.csv("codes_list.csv", stringsAsFactors=FALSE)
codes_list$code <- as.character(codes_list$code)
codes_list$desc <- as.character(codes_list$desc)
rownames(codes_list) <- codes_list$code
replaced <- names(l.out$df.tickers) %in% codes_list$code
names(l.out$df.tickers)[replaced] <- codes_list[names(l.out$df.tickers)[replaced], "desc"]
library(ggplot2)
p <- ggplot(l.out$df.tickers, aes(x = ref.date, y = price.close))
p <- p + geom_line()
p <- p + facet_wrap(~ticker, scales = 'free_y')
print(p)
“codes_list.csv”文件的摘录如下所示:
code desc
AAPL APPLE
BIDU BAIDU
我根据此处提供的解决方案尝试了上述方法:Replace column name by reference a table file in R
解决方案
我将对这两个数据集进行连接以获得相应的 desc。
require(dplyr)
require(ggplot2)
codes_list <- read.csv("codes_list.csv", stringsAsFactors=FALSE)
inner_join(l.out$df.tickers, codes_list, by = c('ticker' = 'code')) %>%
ggplot(aes(x = ref.date, y = price.close)) +
geom_line() +
facet_wrap(~desc, scales = 'free_y')
让我知道这是否有帮助!
编辑:l.out
是一个列表,相关对象是l.out$df.tickers
推荐阅读
- linked-list - 带有链表的插入排序,“分段错误 - 无效的内存引用” - Fortran
- python - 将列表成员作为值添加到字典
- r - R Plotly在等高线图上显示字符串
- python-3.x - 如何仅为一个 rq 队列启动多个工作人员?
- javascript - 如何使用javascript从一列中获取内容
- c - C程序中的命名管道(unix)
- reactjs - PostMan vs Axios 在发出请求时包含授权标头
- squarespace - 使用 CSS 重新排序 Squarespace 索引图像块?
- python - 内核错误:无法启动 - ImportError: DLL load failed while importing win32api
- javascript - 仅表单输入限制数字