【发布时间】:2012-07-04 05:51:53
【问题描述】:
我有两个要转换为 R 的 excel 函数:
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 美元(股数 * 收盘价)
我尝试重新创建的两个输出列的顶部如下所示: output
到目前为止,在 R 中,我已经构建了一个包含必要四列的数据框: data.frame
我只是不知道如何编写将填充股票数量和市值列的函数。对于循环?如果是吗?
再次感谢您!
【问题讨论】:
-
您与
ifelse()走在了正确的轨道上。另请查看?Logic、?Comparison和?round。您应该或多或少能够直接浏览现有代码,将内容替换为 R 等效项,它会起作用。 -
我建议使用更传统的
if {} else {}语句。ifelse()并不总是以直观的方式发挥作用。 -
@BrandonBertelsen 我同意,了解
if和ifelse之间的区别很重要。if应该用于控制语句,它接受一个逻辑参数,而ifelse接受一个向量参数。
标签: excel r for-loop dataframe finance