2016-11-23 10 views
1

同じdata.frame内の別の列の値に基づいて係数を並べる方法を理解しようとしていました。私は私の努力のための基礎として、この質問を使用している:私の例では別の列の数値に基づいて係数のレベルを設定する

R - Order a factor based on value in one or more other columns

私はorder_IDによって設定されたftorのレベルを好みます。 order_IDは単なる順位のランクです。ここで私はこれまで持っているものです。

df <- data.frame(order_ID=c(5,3,1,4,2), 
      ftor=LETTERS[1:5]) 


df$ftor <- factor(df$ftor, levels=df[order(df$order_ID),], ordered=TRUE) 

これは私がレベルをしようとしたとき、私は上記の試みの後に取得されるものです。ここでorder_IDの値に基づいて

> levels(df$ftor) 
[1] "c(1, 2, 3, 4, 5)" "c(3, 5, 2, 4, 1)" 

は、私が期待していものです:

> levels(df$ftor) 
[1] "C" "B" "E" "D" "A" 

要するに、同じ列のレベルを使用して、同じdata.frame内の別の要素のレベルを設定する方法をお勧めしますか?

+1

をそれは 'レベル= DF $ ftor [オーダー(DF $ ORDER_ID)]' –

+0

パーフェクトでなければなりません! @RichScrivenあなたは答えとしてこれを入れたいと思っています、私はこれを受け入れます。私はその問題を見る。助けてくれてありがとう。 – boshek

答えて

3

実際に@RichScrivenによって提供された答えは、私が望む(df$ftor)の列とむしろdata.frame(df)の順番を設定していないということです。さらに、索引付けは不調であった。だから、最終的に私はこの置き換え:これで

df$ftor <- factor(df$ftor, levels=df[order(df$order_ID),], ordered=TRUE) 

df$ftor <- factor(df$ftor, levels=df$ftor[order(df$order_ID)], ordered=TRUE) 
関連する問題