2017-01-20 6 views
-1

私は変数 "価格"を含むダイヤモンドデータセットを持っています。私は可変価格で提供される情報に基づいて "price_range"という追加の変数を作成したいと思います。私は次のループを作成しました:Rのループの場合は

diamonds$price_range <- for (diamonds$price in 1:length(diamonds$price)){ 
    if (diamonds$price<= 500) { 
    diamonds$price_range="not expensive" 
    } else if (diamonds$price > 500 & diamonds$price <=1000) { 
    diamonds$price_range="affordable price" 
    } else{ 
    diamonds$price_range="expensive" 
    } 
} 

私のループには何が問題なのですか?それをRで動作させるにはどうすれば修正できますか?

+1

1を助けている)を使用します「= "の代わりに" == "の代わりに2)インデックスを使用して上書きを避け、forループを変数に割り当てないでください – BigDataScientist

+0

関数' cut'を見てください – Cath

+0

@TonioLiebrand http://r-pkgs.had.co.nz/style .html#style-syn&https://google.github.io/styleguide/Rguide.xml#assignment:割り当てのための '= 'ではなく、' <-'を使用します。 – Uwe

答えて

1

Rは、要素ごとの操作を使用しているので、あなたはまた、ネストされたifelse声明でこれを行うと希望

diamonds$price_range <- ifelse(diamonds$price <= 500, "not expensive", 
    ifelse(c(diamonds$price > 500 & diamonds$price <=1000), "affordable price", "expensive")) 

table(diamonds$price_range) 

ループを作る手間を省くことができ

+0

ありがとうございます!これは機能します。 Howerever、私はまだ私のコードがうまくいかない理由を知りたいです。 –

+0

@DashaBazueva可能な限りRでループを使用しないようにしたい。ループの構造を見ると、実際にはデータをループしていません。 – MJH

+0

試みのための: :に比べ{ プリント(ダイヤモンド$価格) } :(長さ(ダイヤモンド$価格)1におけるダイヤモンド$価格)のため (I 1:長さ(ダイヤモンド[1])) { print(diamonds [i、7]) } 2番目のループは、ループを通過して価格を得るたびに行インデックスを変更します。ifステートメントと上記のコメントでその価格を取ることができますあなたが欲しいもの。あなたの質問が解決された場合は、必ず答えをマークしupvoteしてください。ようこそSO – MJH

関連する問題