R 用特定列上的条件替换值

R 用特定列上的条件替换值,r,replace,multiple-columns,R,Replace,Multiple Columns,我已经尝试将此自动化,并四处搜索,但效果不佳。我从雅虎财经下载了以下数据 require(quantmod) tickers <- c("SPY") start <- "2020-01-01" end <- "2020-06-01" getSymbols(tickers, from = start, to = end, env =

我已经尝试将此自动化,并四处搜索,但效果不佳。我从雅虎财经下载了以下数据

require(quantmod)

tickers <- c("SPY")
start <- "2020-01-01"
end   <- "2020-06-01"

 getSymbols(tickers,
             from = start,
             to = end,
             env = globalenv())
现在,我可以为一列运行以下代码

  data$open <- ifelse(data$day < as.Date("2020-05-01"), data$open/100, data$open)
总的来说,我有两个问题

  • 在某些情况下,我们如何对多列的值运行函数
  • 我们能在xts框架而不是数据框架内完成所有这些吗

  • 您可以在
    dplyr 1.0.0
    中尝试使用

    library(dplyr)
    
    data <- data.frame(date=index(SPY), coredata(SPY))
    
    colnames(data) <- c("day", "open", "high", "low", "close", "volume", "adjusted_price")
    to_replace <- c("open", "high", "low", "close", "volume", "adjusted_price")
    
    data <- data %>% 
      mutate(across(to_replace, ~ if_else(day >  as.Date("2020-05-1"), . / 100, .)))
    
    
    库(dplyr)
    
    数据您可以在
    dplyr 1.0.0
    中尝试使用

    library(dplyr)
    
    data <- data.frame(date=index(SPY), coredata(SPY))
    
    colnames(data) <- c("day", "open", "high", "low", "close", "volume", "adjusted_price")
    to_replace <- c("open", "high", "low", "close", "volume", "adjusted_price")
    
    data <- data %>% 
      mutate(across(to_replace, ~ if_else(day >  as.Date("2020-05-1"), . / 100, .)))
    
    
    库(dplyr)
    数据
    
    library(dplyr)
    
    data <- data.frame(date=index(SPY), coredata(SPY))
    
    colnames(data) <- c("day", "open", "high", "low", "close", "volume", "adjusted_price")
    to_replace <- c("open", "high", "low", "close", "volume", "adjusted_price")
    
    data <- data %>% 
      mutate(across(to_replace, ~ if_else(day >  as.Date("2020-05-1"), . / 100, .)))