2011-11-14 16 views
0

予測モデルに使用したいデータをcsv形式で使用しています。私はRのデータを読んで、単純な前処理(NAを付けないなど)を適用します。私がSVM分類器を訓練する前に、scale(x)関数を使ってデータを拡大縮小したいと思っています。問題は、ラベル列がデータセットの一部であることです。 Rにその列を無視するように指示するにはどうすればよいですか?ここでベストプラクティスは何ですか?特定の列を無視してRでデータをスケーリングする

label, X1, X2, X3, ..., Xn 
Y, 34, 74, 29, ..., 47 
N, 88, 46, 95, ..., 33 
N, 58, 78, 25, ..., 68 
Y, 33, 56, 61, ..., 13 

は私がしようとした場合:

x <- scale(trouble[,-c(1)]) 
trouble <- x 
summary(trouble) 
rm(x); 

最初の列が削除され、良いのために行っています。

答えて

4

あなたが一部譲渡を行うことができます。

trouble[, -c(1)] <- scale(trouble[, -c(1)]) 
1

scaledata.frameオブジェクトでも動作することに注意してください。

だから
dtf <- read.table(text = "label, X1, X2, X3, ..., Xn 
+ Y, 34, 74, 29, ..., 47 
+ N, 88, 46, 95, ..., 33 
+ N, 58, 78, 25, ..., 68 
+ Y, 33, 56, 61, ..., 13 
+ ", sep = ",", header = TRUE) 
> (dtf <- dtf[-5]) 
    label X1 X2 X3 Xn 
1  Y 34 74 29 47 
2  N 88 46 95 33 
3  N 58 78 25 68 
4  Y 33 56 61 13 
> (dtf_scales <- scale(dtf[-1])) 
      X1   X2   X3   Xn 
[1,] -0.7435537 0.6958884 -0.7210036 0.2913066 
[2,] 1.3422592 -1.1598139 1.3039428 -0.3128849 
[3,] 0.1834743 0.9609887 -0.8437277 1.1975938 
[4,] -0.7821798 -0.4970631 0.2607886 -1.1760155 
attr(,"scaled:center") 
    X1 X2 X3 Xn 
53.25 63.50 52.50 40.25 
attr(,"scaled:scale") 
     X1  X2  X3  Xn 
25.88919 15.08863 32.59346 23.17146 

...

EDIT:

あなただけの数値指標と負の添字を使用することができます。列名を渡すと、負の添字は使用できないので、dtf[-"label"]は機能しません。その場合、which%in%を使用し、論理インデックスに焦点を当てることができます。

関連する問題