2012-02-24 14 views
1

データフレームには列が常に追加されています。私は最後に残したいと思う列もあります。私はどこかで本当に基本的なコマンドをスキップしなければならないと思うが、どこでも答えを見つけることはできないようだ。とにかく、ここでいくつかのサンプルデータは、次のとおりです。データフレームの列を最後の列に並べ替える方法

x=1:10 
y=21:30 
z=data.frame(x,y) 
z$total=z$x+z$y 
z$w=11:20 
z$total=z$x+z$y+z$w 

私はzを入力すると、私はこれを取得:

x y total w 
1 1 21 33 11 
2 2 22 36 12 
3 3 23 39 13 
4 4 24 42 14 
5 5 25 45 15 
6 6 26 48 16 
7 7 27 51 17 
8 8 28 54 18 
9 9 29 57 19 
10 10 30 60 20 

注合計の列はワットの前に来て、明らかにそれ以降の列をどのように。私はそれを最後の列にすることができる方法はありますか?何とかncol(z)を使わなければならないと思います。またはそうでないかもしれません。

答えて

4

次のようにあなたの列の順序を変更することができます

z <- z[,c('x','y','w','total')] 

これをプログラムで実行するには、列の追加が完了したら、次のように名前を取得できます。

nms <- colnames(z) 
nms[nms!='total'] 

上記と組み合わせる:

z <- z[, c(nms[nms!='total'],'total')] 
次に、あなたはそうのような「総」でないものをつかむことができます
4

ここでは論理的な問題があります。 data.frameに追加するたびに、右側に拡大します。

最も簡単な修正:完了するまで合計ベクトルを保持してから追加します。それが右端の列になります。

(クリティカルなアプリケーションのために、あなたはもちろんk+1列とちょうどインデックスの合計のための最後の1を割り当て、あらかじめご幅kを決定するであろう。)

関連する問題