Как создать фрейм данных с числовыми и символьными столбцами?

Я пытаюсь создать фрейм данных, состоящий из трех символьных переменных и одной числовой переменной. Когда я запускаю следующий код, я получаю матрицу из четырех столбцов, но переменная score больше не является числовой, а баллы рассматриваются как факторы.

school<-c("NYU", "BYU", "USC", "FIT", "UNH","UCLA","USF","Columbia")
state<-c("NY","UT","CA","NY","NY","CA", "CA","NY")
measure<-c("MSAT","MSAT","GPA","MSAT","MSAT","GPA","GPA","GPA")
score<-c(500, 490, 2.9, 759, 550, 1.2, 3.1, 3.2)
data<-cbind(school,state, measure,score)

Если я побегу

data1<-data.frame(cbind(school,state, measure,score))

Я получаю кадр данных, где score все еще является фактором. Как я могу построить этот фрейм данных, чтобы score был числовым?


person user3614783    schedule 23.07.2014    source источник
comment
Если вы хотите создать фрейм данных, используйте data.frame() напрямую, без cbind.   -  person    schedule 23.07.2014


Ответы (2)


Чтобы построить фрейм данных, состоящий из трех символьных переменных и одной числовой переменной, необходимо указать: stringsAsFactors=FALSE в функции data.frame():

school<-c("NYU", "BYU", "USC")
state<-c("NY","UT","CA")
measure<-c("MSAT","MSAT","GPA")
score<-c(500, 490, 2.9)
df<-data.frame(school,state, measure,score,  stringsAsFactors=FALSE)

Вот результат:

summary(df)
school             state             measure              score      
Length:3           Length:3           Length:3           Min.   :  2.9  
Class :character   Class :character   Class :character   1st Qu.:246.4  
Mode  :character   Mode  :character   Mode  :character   Median :490.0  
                                                         Mean   :331.0  
                                                         3rd Qu.:495.0  
                                                         Max.   :500.0  
person farid khafizov    schedule 20.03.2018

 school<-c("NYU", "BYU", "USC", "FIT", "UNH","UCLA","USF","Columbia")
 state<-c("NY","UT","CA","NY","NY","CA", "CA","NY")
 measure<-c("MSAT","MSAT","GPA","MSAT","MSAT","GPA","GPA","GPA")
 score<-c(500, 490, 2.9, 759, 550, 1.2, 3.1, 3.2)
 data<-data.frame(school,state, measure,score)
 data
   school state measure score
     NYU    NY    MSAT 500.0
     BYU    UT    MSAT 490.0
     USC    CA     GPA   2.9
     FIT    NY    MSAT 759.0
     UNH    NY    MSAT 550.0
    UCLA    CA     GPA   1.2
     USF    CA     GPA   3.1
Columbia    NY     GPA   3.2

is.numeric(data$score)
[1] TRUE

Я думаю, это должно сработать!!!

person nopainnogain    schedule 23.07.2014
comment
Почти работает, stringsAsFactors - единственная недостающая часть (попробуйте str(data)) - person R Yoda; 24.01.2018