2017-08-30 7 views
0

2つのデータフレームがあります。 1つは訓練データフレームであり、もう1つは試験データフレームである。その中にはたくさんの列があります。したがって、ハードコーディングによる列の削除はオプションではありません。列がトレーニングデータに存在しない場合は、テストデータから列を削除します。 - R

私は、トレーニングデータにそのデータがない場合、テストデータの列を削除する関数を探しています。それがモデルに影響を与えませんよう

は例

Train_data1<- read.table(text = " 
A B C D 
1 1 1 0 
1 1 1 1 
1 2 2 2 
1 3 3 0", header = TRUE) 

のために私は、トレーニングデータフレームから行を削除しています。

Train_data <- read.table(text = " 
B C D 
1 1 0 
1 1 1 
2 2 2 
3 3 0", header = TRUE) 

したがって、列にはトレーニングデータが含まれていないため、テストデータにその列が含まれないようにします。

testing data <- read.table(text = " 
B C D 
1 1 0", header = TRUE) 

任意の解決策。ありがとう。

答えて

3
test <- data.frame(A=1, B=1, C=1, D=1) 
train <- data.frame(A=1, B=1) 

testNew <- test[, colnames(train)] 
testNew 
# A B 
# 1 1 1 
+1

私は 'intersect'を使って答えようとしていましたが、この答えはもっと簡単です。 – lmo

関連する問題