2017-08-30 42 views
0

我有兩個數據幀。一個是訓練數據框,另一個是測試數據框。裏面有很多列。因此,通過硬編碼刪除列不是一個選項。如果列中不存在訓練數據,則從測試數據中移除列 - 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

相關問題