将Excel函数转换为R
我有两个Excel函数,我试图转换成R:
numberShares =IF(AND(N213="BOH",N212="BOH")=TRUE,P212,IF(AND(N213="BOH",N212="Sell")=TRUE,ROUNDDOWN(Q212/C213,0),0)) marketValue =IF(AND(N212="BOH",N213="BOH")=TRUE,C213*P212,IF(AND(N212="Sell",N213="Sell")=TRUE,Q212,IF(AND(N212="BOH",N213="Sell")=TRUE,P212*C213,IF(AND(N212="Sell",N213="BOH")=TRUE,Q212))))
被引用的单元格包括:
- c =股票的收盘价
- n =“买入或持有”或“卖出”的头寸价值
- p =股份数量
- q =市场价值,假设初始股本为10,000美元(股数*收盘价)
和我试图重新创build的两个输出列的顶部看起来像这样: 输出
到目前为止,在RI已经构build了一个必要的四列数据框 : data.frame
我只是不知道如何编写将填充股票和市场价值列的function。 为了循环? 如果别的?
再次谢谢你!!
隐瞒AND()的中缀“&”; “=”改为“==”; 和IF的ifelse(),你在一半。 问题在于将你的单元格引用转换为数组或matrix引用,为了这个任务,我们需要更好地描述数据布局:
numberShares <- ifelse( N213=="BOH" & N212=="BOH", #Perhaps PosVal[213] == "BOH" & PosVal[212] == "BOH" # ... and very possibly the 213 should be 213:240 and the 212 should be 212:239 P212, ifelse( N213=="BOH" & N212=="Sell" , round(Q212/C213, digits=0), 0))
(你似乎正在返回似乎有点令人怀疑的不相称的值)假设这是正确的代码,尽pipe我怀疑下一个翻译涉及在这个结构中应用相同的replace(虽然你似乎在最后一个IF函数中缺less一个else结果:
marketValue <- IF( AND(N212="BOH", N213="BOH")=TRUE, C213*P212, IF(AND(N212="Sell",N213="Sell")=TRUE, Q212, IF( AND(N212="BOH",N213="Sell")=TRUE, P212*C213, IF(AND(N212="Sell",N213="BOH")=TRUE, Q212))))
(你对AND( .,.)=TRUE
是我认为Excel中不必要的,在R中肯定是不必要的)