2

Rに変換しようとしている2つの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 と仮定 (株式数 * 終値)

再作成しようとしている 2 つの出力列の上部は次のようになります。

これまでのところ、RI で必要な 4 つの列を持つデータフレームを構築しました: data.frame

株式数と市場価値の列を設定する関数の書き方がわかりません。ループ用?もしそうなら?

再びありがとう!!

4

1 に答える 1

4

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))

(あなたは不相応な値を返しているようです.

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では確かに不要だと思います。)

于 2012-07-03T18:56:23.680 に答える