2011-11-17 14 views
16

私はいくつかのテーブルを持っているとしましょう。Tは5つのカラムを持つとします。列の連続するサブセットを選択して新しいテーブルとして格納する方法を理解しています。そのために、私はコンマの右に括弧とコロンを使用します。Rテーブルの連続していないカラムを選択する

newT <- T[,2:4] # creates newT from columns 2 through 4 in T 

しかし、どのように私はサブセット化のための非連続的な列を選択しますか?列1と列3を選択したいとします。これをどうやって行うのですか?もう一つ私がやりたいことが選択のタイプ、および私が正しくあなたの質問を理解していれば、T.

+0

が重複する可能性をチェックしてくださいファイルからRに列を選択するだけですか? ( 'read.table'と' scan'の間の幸せな媒体?)](http://stackoverflow.com/questions/2193742/ways-to-read-only-select-columns-from-a-file-into- –

+2

オブジェクトの名前を 'T'(または 'F')にすると、問題が発生する可能性があります。回避する方が良いでしょう。 Rには「テーブル」もありますが、実際にはデータフレームや行列があると思います。 –

答えて

26

まず、必要なインデックスを生成するだけです。 c関数を使用すると、値を連結することができます。値は、列インデックスまたは列名のいずれかです(ただし、混在しない)。

df <- data.frame(matrix(runif(100), 10)) 
cols <- c(1, 4:8, 10) 
df[,cols] 

またにインデックスが負のインデックスを指定してを削除した列を選択することができます:ランダムな列の場合

df[, -c(3, 5)] # all but the third and fifth columns 
+0

のようになります。 'val < - 6 cols < - c(1、c(val-4:val-1))df [、cols]' –

3

からランダムに列を選択しているためには、次のような何かを試してみてください方法がわからない:

df1 = data.frame(state=c("KS","CO","CA","FL","CA"), value=c(1,2,3,7,9)) 
df1 

df1[c(c(1,3),4:5),] 
df1[c(1,3,4:5),] 
+0

私は本当にあなたのソリューションがどれほど簡潔で、 'c'関数を使ってコマンドを1つのコマンドにまとめておくのが大好きです。しかし、あなたのソリューションは不連続な行にサブセットを設定していますが、上の質問はサンプルデータフレーム 'df coip

2

は読むために[方法の?sample

df <- data.frame(matrix(runif(25), 5)) 
df 
#   X1  X2   X3   X4  X5 
#1 0.7973941 0.6142358 0.07211461 0.01478683 0.6623704 
#2 0.8992845 0.8347466 0.54495115 0.52242817 0.4944838 
#3 0.8695551 0.9228987 0.00838420 0.58049324 0.9256282 
#4 0.1559048 0.7116077 0.08964883 0.06799828 0.3752833 
#5 0.2179599 0.4533054 0.60817319 0.62235228 0.8357441 

df[ ,sample(names(df), 3)] 
#   X5   X3  X2 
#1 0.6623704 0.07211461 0.6142358 
#2 0.4944838 0.54495115 0.8347466 
#3 0.9256282 0.00838420 0.9228987 
#4 0.3752833 0.08964883 0.7116077 
#5 0.8357441 0.60817319 0.4533054 
関連する問題