首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Excel函数转换为R

将Excel函数转换为R
EN

Stack Overflow用户
提问于 2012-07-03 18:30:26
回答 1查看 3K关注 0票数 2

我有两个excel函数,我正试图将它们转换为R:

代码语言:javascript
复制
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美元(股票数*收盘价)

我试图重新创建的两个输出列的顶部如下所示:输出

到目前为止,在R中,我已经用必要的四列构建了一个数据框架:data.frame

我只是不知道如何编写函数来填充股票和市值列的数量。为了循环?否则呢?

再次谢谢你!!

EN

回答 1

Stack Overflow用户

发布于 2012-07-03 18:56:23

将AND()'s转换为infix "&";将"=“转换为"==";以及IF's to ifelse(),而您已经到了一半。问题在于将单元格引用转换为数组或矩阵引用,对于该任务,我们需要更好地描述数据布局:

代码语言:javascript
复制
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函数中是这样的):

代码语言:javascript
复制
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.)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11317001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档