【发布时间】:2020-10-19 12:36:21
【问题描述】:
我已尝试将其自动化并四处搜索,但没有结果。我从雅虎财经下载了以下数据。
require(quantmod)
tickers <- c("SPY")
start <- "2020-01-01"
end <- "2020-06-01"
getSymbols(tickers,
from = start,
to = end,
env = globalenv())
现在,如果index(data) 在“2020-05-01”之前,我想替换SPY$open、SPY$close、...中的所有值。我尝试使用xts 格式,但我做不到,所以我决定通过以下方式将其转换为data.frame:
data = SPY # I create this so I can scale up the code for not only SPY.
data$day <- as.Date(data$day) # format day.
colnames(data) <- c("day", "open", "high", "low", "close", "volume", "adjusted_price")
to_replace <- c("day", "open", "high", "low", "close", "volume", "adjusted_price")
现在,我可以为一列运行以下代码
data$open <- ifelse(data$day < as.Date("2020-05-01"), data$open/100, data$open)
如何为to_replace 中命名的所有列创建自动代码。我尝试创建一个函数并像这样应用lapply,但它不起作用。
replace <- function(x) {
x <- ifelse(data$day > as.Date("2020-05-1"), x/100, x)
return(x)
}
lappy(tickers, replace)
总的来说,我有两个问题。
- 我们如何在某些条件下对多列的值运行函数?
- 我们可以在 xts 框架而不是数据框架内完成所有这些操作吗?
【问题讨论】:
标签: r replace multiple-columns