我有两个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))))所引用的单元格包括:
我试图重新创建的两个输出列的顶部如下所示:输出
到目前为止,在R中,我已经用必要的四列构建了一个数据框架:data.frame
我只是不知道如何编写函数来填充股票和市值列的数量。为了循环?否则呢?
再次谢谢你!!
发布于 2012-07-03 18:56:23
将AND()'s转换为infix "&";将"=“转换为"==";以及IF's to 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.)
https://stackoverflow.com/questions/11317001
复制相似问题