【发布时间】:2021-12-09 22:02:25
【问题描述】:
我不确定这是问这种问题的正确地方,但这里是……
我想对我在 R 中的数据进行统计分析。但是,这些数据分散在几个不同大小的 data.frame (df) 对象中。
所有df 对象具有相同的结构,例如:
Date PDD.Open PDD.High PDD.Low PDD.Close PDD.Volume PDD.Adjusted
1 2018-07-26 26.50 27.45 25.00 26.70 43213200 26.70
2 2018-07-27 27.54 27.54 23.21 24.60 19923300 24.60
3 2018-07-30 23.31 23.90 21.88 22.50 13967700 22.50
4 2018-07-31 22.20 22.71 19.62 22.59 13709600 22.59
5 2018-08-01 19.38 21.40 18.62 20.31 19339000 20.31
6 2018-08-02 19.27 20.18 19.03 19.66 9268500 19.66
例如,截至今天 (2021.10.23),MPNGF 有 734 个观测值,NKLA 有 850 个,PDD 有 818 个,RMO 648 个。
当我尝试将PDD$PDD.Open 与RMO$RMO.Open 相关联时,我得到一个Error in cor(PDD$PDD.Open, RMO$RMO.Open) : incompatible dimensions。
下面是一个希望可重现的代码示例来说明问题:
library(quantmod)
# Load various ticker data
tickers <- c("NKLA", "MPNGF", "PDD", "RMO")
getSymbols.yahoo(tickers, auto.assign = TRUE, env = globalenv(),
from = "2000-01-01")
# Close all Internet connections as a precaution
# https://stackoverflow.com/a/52758758/2950721
closeAllConnections()
# Find xts objects
xtsObjects <- names(which(unlist(eapply(.GlobalEnv, is.xts))))
# Convert xts to data.frame
# https://stackoverflow.com/a/69246047/2950721
for (i in seq_along(xtsObjects)) {
assign(xtsObjects[i], fortify.zoo(get(xtsObjects[i])))
}
# Change name of 1st column to Date of converted xts objects
# https://stackoverflow.com/a/69292036/2950721
for (i in seq_along(xtsObjects)) {
tmp <- get(xtsObjects[i])
colnames(tmp)[colnames(tmp) == "Index"] <- "Date"
assign(xtsObjects[i], tmp)
}
remove(i, tickers, tmp, xtsObjects)
> cor(PDD$PDD.Open, RMO$RMO.Open)
Error in cor(PDD$PDD.Open, RMO$RMO.Open) : incompatible dimensions
其他重要细节:
-
df对象的数量增加(即定期添加新代码/符号并下载其数据)。 - 现有的
df对象会定期(有时每天)更新(即,添加到每个下载的代码的最后值)。
我的问题:
- 考虑到上述情况,应该如何“处理”数据(因为没有更好的术语),以便可以使用它进行任何类型的统计分析(包括超过 2 个
df对象)? - 是否应该合并数据?
- 有最佳做法吗?
- 应该使用什么代码来进行合并(记住它需要更新)?
提前致谢。
使用的系统:
- R 版本:4.1.1 (2021-08-10)
- RStudio 版本:1.4.1717
- 操作系统:macOS Catalina 版本 10.15.7 和 macOS Big Sur 版本 11.6
【问题讨论】:
标签: r dataframe data-manipulation