我有两个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))))
引用的单元格包括:
我尝试重新创建的两个输出列的顶部如下所示: output
到目前为止,在R中我构建了一个包含必要的四列的数据帧: data.frame
我只是不知道如何编写将填充股票数量和市场价值列的函数。对于循环? ifelse?
再次,谢谢!!
答案 0 :(得分:3)
将AND()转换为中缀“&”; “=”到“==”;并且if到ifelse()并且你在那里。问题在于将单元格引用转换为数组或矩阵引用,对于该任务,我们需要更好地描述数据布局:
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))
(你似乎正在返回不相称的价值,这看起来有些可疑。)假设这是正确的代码,尽管我有疑虑,下一个翻译涉及在这个结构中应用相同的替换(尽管你似乎在最后遗漏了其他结果) IF功能:
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中肯定是不必要的。)