2013-10-06 5 views
0

Я новичок в алгоритмах R и машинного обучения и пытаюсь научиться с помощью kaggle scikit example.Добавление столбца из одного кадра данных в качестве последнего столбца другого фрейма данных

У меня есть следующие два фрейма данных:

> str(d.train) 
'data.frame': 1000 obs. of 40 variables: 
$ V1 : num 0.299 -1.174 1.192 1.573 -0.613 ... 

> str(d.trainLabels) 
'data.frame': 1000 obs. of 1 variable: 
$ V1: int 1 0 0 1 0 1 0 1 1 0 ... 

Из моего понимания, большинство инструментов R предназначены для использования с информацией класса внутри того же кадра данных. По этой причине я пытаюсь добавить trainLabels в качестве последнего столбца в кадр данных поезда.

Я попытался следующий код:

# http://www.gm.fh-koeln.de/~konen/WPF-DM-Cup/DM-Template/ClassifyTemplate/utils_DMC.r 
###################################################################################### 
# bind the column with name response.predict and contents vec as last column 
# to data frame d 
###################################################################################### 
bind_response <- function(d,response.predict,vec) 
{ 
    # drop column response.predict if there, do nothing if not there 
    d <- d[,setdiff(names(d),response.predict)] 
    # bind column response.predict as last column to data frame d 
    d <- cbind(d, prediction=vec) 
    names(d)[names(d)=="prediction"] <- response.predict 

    return(d) 
} 

d.totalTrain <- bind_response(d.train, d.trainLabels, "1") 

, но я не уверен, что результат это то, что я хочу:

> str(d.totalTrain) 
'data.frame': 1000 obs. of 41 variables: 
... 
$ V40                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                : num 0.101 -1.818 2.987 1.883 0.408 ... 
$ c(1, 0, 0, 1, 0, 1, 0, 1, ... 
+0

Какой результат * сделать * вы хотите? –

+0

Я хочу что-то вроде: $ V41: int 1 0 0 1 0 1 0 1 1 0 ... – tucson

ответ

2

ли переименование первым сделать то, что вы хотите?

colnames(d.trainLabels) <- "V41" 
cbind(d.train, d.trainLabels) 
+0

Как получить доступ к результату cbind? [ok]: m <- cbind(). Это работает. Спасибо. – tucson

+0

Точно. Нотабене если вы не уверены, что порядок одинаковый между двумя data.frames, вы 'cbind'ing, вместо этого используйте' merge'. В этом случае вы будете в безопасности с 'cbind'. –

Смежные вопросы

 Смежные вопросы