我遇到了运行代码需要大量时间的问题。我有一个数据框架与某些公司的市值,我有第二个数据框架与比率。下面是一个可重复的例子
AAPL <- c(500,550,600,540,580)
MSFT <- c(600,670,630,650,650)
WDC <- c(50,40,40,45,50)
mcap<- data.frame (AAPL,MSFT,WDC)
AAPL.r <- c(3,3.2,4,4.5,5)
MSFT.r <- c(6,5.8,5.7,6.3,6)
WDC.r <- c(10,8,8.2,9,9)
ratio <- data.frame (AAPL.r,MSFT.r,WDC.r)
我想做的是在市值低于100时将比率换成NA。这就是我正在做的事情
for (i in 1:5){
for (j in 1:3){
ratio[i,j] <- ifelse (mcap[i,j]<100,NA,ratio[i,j])
}
}
然而,在大数据框架中,这需要数小时才能运行。有没有更有效的方法来做到这一点?
提前谢谢
答案 0 :(得分:6)
你可以做ratio[mcap<100]<-NA
。
答案 1 :(得分:3)
另一种可能性是使用函数is.na<-
。
is.na(ratio) <- mcap < 100