2016-06-16 7 views
0

Rの商品の価格を計算しようとしています。すべての商品が販売されているわけではないため、実際の販売価格はありません。私は販売価格を計算し、販売価格のない値のために空白を返すことを望みます。条件区切りR

私はこの機能を使い始めましたが、うまくいかないようです。

sale.price <- function(price) { 
    if (CM.sample$Sales > 0) { 
    return(CM.sample$Sales/CM.sample$Product.Quantity.Purchased) 
    } else { 
    return("") 
    } 
} 

sale.price <- as.numeric(sapply(sale.price, price)) 

これは私のデータの一例です。

Product Sales Order.Quantity Price 
P1   120   2 
P2   45   1 
P3     
P4   25   2 
P5 
P6   180   3 

理想的には、私は最終的な結果をこのようにしたいと思います。

Product Sales Order.Quantity Price 
P1   120   2   60 
P2   45   1   45 
P3         
P4   25   2   12.5 
P5 
P6   180   3   60 
+1

あなたはいくつかの問題を持っているが、あなたが 'dput'を使用してデータを提供する場合、それらを修正する方法をお見せするためにはるかに容易になります。 'dput(CM.sample [1:6、])'の出力にあなたの質問を貼り付けてください。 – eipi10

+0

あなたの返信ありがとうございます@ eipi10、私は 'dput'で出力しようとしましたが、 data.frameは非常に大きく、大きな列にはテキストの文字列が含まれている列がありますが、これが機能しない可能性があります。 – Davis

答えて

0

何について:

# Initialize with "" 
CM.sample$Price <- "" 
# Calculate for rows with quantites 
CM.sample$Price[as.numeric(as.character(CM.sample$Sales)) > 0] <- CM.sample$Sales/CM.sample$Product.Quantity.Purchased 
+0

'Sales'のように、値がない空の文字列(' '' 'や' '" '')があります。そうであれば、「売上」は文字または因子としてコード化され、除算はエラーまたはすべての「NA」プラス警告のいずれかになる。 – eipi10

+0

ありがとう@この関連コメントはeipi10! – HubertL

+0

ありがとう@HubertL、eipi10は正しいですが、空の文字列にはエラーの処理方法が不明なため、問題がどこにあるのかが含まれています。私はあなたのコードを試しましたが、 'Sales'や' Order.Quantity'の値が入っているフィールドでは 'NA'を呼び戻しました。空の文字列は空のまま残っていました。 – Davis

関連する問題