循环更改多个数据集的行名以输出多个数据帧-并比较它们

时间:2019-03-26 20:33:44

标签: r for-loop

因此,我正在尝试创建一个将多个数据帧相互比较的分析。您从最近日期到30天前的百分比差异。然后输出在30天内移动时间百分比最大的列表。 我能够轻松地从Tiingo提取数据,创建每个数据集的配对分析。我想我为此创建了一个for循环,但这使事情变得困难。由于该日期被视为时间戳,因此我想将其分开并放在其自己的列中。我将这个循环放在一起,它将行名更改为一列,然后得到我想要的%差异。我不确定另一部分,如何对它们进行排名。我想这与嵌套循环有关吗?但是到目前为止,这是我遇到的问题:现在,如果我愿意的话,我可以手动完成每个任务。但我计划将其扩大到更大的列表,这可能会很耗时:

   library(ggplot2)      
   library(tseries)      
   library(tidyverse)        
   library(lubridate)     
   library(tibble)   
   library(dplyr) 
   library(digest)    
   setDefaults("getSymbols.tiingo", api.key="your key")    
   symbols2 <- c('UA', 'UAA','MYL','TEVA','HD','LOW','MOV', 'FOSL')
   loadSymbols(symbols2,src='tiingo',from ="2018-2-01")
   r1 <- as.data.frame((MOV$MOV.Close) /  (FOSL$FOSL.Close))    
   r6 <- as.data.frame(HD$HD.Close / LOW$LOW.Close)
   r7 <- as.data.frame(MYL$MYL.Close / TEVA$TEVA.Close)     
   r9 <- as.data.frame(UA$UA.Close / UAA$UAA.Close) 
   i <- list(r1,r6, r7, r9,)     

这是事情变得混乱的地方!

 `for(j in i){
 chg <-  rownames_to_column(j, var = "date")
 chg1 <- j %>% 
   mutate(date = ymd(date)) %>% 
   rename(ratio = Ratio) }`      

这显示了%变化

j = (tail(i[,2],1) - head(tail(i[,2],30),1))/head(tail(i[,2],30),1)*100

*我希望输出以绝对差最大的顺序排列,以分子代码之一作为代码,例如: 清单 MOV 9 UA 3 HD 2.4 MYL .23

相反,我陷入循环获取中

得到此错误: as.character(x)中的错误:无法将类型'closure'强制转换为类型'character'的向量

0 个答案:

没有答案