1

我正在使用 R 和库quantmod 将数据导入为:

getSymbols("TMUS",from="2020-05-21", src="yahoo",frequency = "daily", format = "%Y-%m-%d") 
getSymbols("AAPL",from="2020-05-21", src="yahoo",frequency = "daily", format = "%Y-%m-%d") 

然后我想取消列出它们并给它们一个日期列:

TMUS<- as.vector(unlist(TMUS$TMUS.Close)) %>% as_tibble() %>% add_column(date=index(TMUS),.before=1)
AAPL<- as.vector(unlist(AAPL$AAPL.Close)) %>% as_tibble() %>% add_column(date=index(AAPL),.before=1)

最后内部加入它们以创建一个独特的数据库:

data <- TMUS %>%
        inner_join(.,AAPL, by = "date")

问题是内部连接增加了行数。我相信原因是两者TMUS都是AAPL列表。我试图通过使用取消列出它们as.vector(unlist(.)),但它们仍然是列表。

有没有办法在不乘以行的情况下获得数据集内部连接?

4

1 回答 1

2

尝试以下操作(如果您想调整关闭,则使用 Ad 代替 Cl)。 AAPL,TMUS并且both将是 xts 对象。如果您只想要两个系列中都有数据的日期,请使用na.omit(both).

library(quantmod)

getSymbols(c("AAPL", "TMUS"))
both <- cbind(Cl(AAPL), Cl(TMUS))

如果您有很多股票,请尝试以下方法:

getSymbols(c("AAPL", "TMUS"), env = e <- new.env())
both <- do.call("cbind", eapply(e, Cl))
于 2021-05-24T13:52:57.620 回答