Р: Можно ли превратить комбинации векторов в наборы данных? - PullRequest
0 голосов
/ 19 февраля 2012

Я новичок в R.

Посмотрев несколько учебных пособий по регрессионному анализу (на YouTube), я решил создать свой собственный набор данных и применить к нему то, что узнал.Это то, что я сделал!

Я хотел случайным образом создать список зарплат, возрастов и семейного положения.

Зарплаты

salary = sample(2000:3000, 250, replace = T)

Возраст

ages = sample(20:50, 250, replace = T)

MaritalStatus

marSt = sample(c("MARRIED", "SINGLE"), 250, repeat = T)

Затем я объединил три набора данных с:

dataset = cbind(salary, ages, marSt)

Наконец, я попытался выполнить регрессию на том, что я считал своим новым набором данныхс помощью этой команды:

data.reg = lm(salary~ages+marSt, data = dataset)

... только для того, чтобы мне сказали, что произошла ошибка и что набор данных объекта на самом деле НЕ является набором данных.

У меня вопрос дваСвернуть: (I) Можно ли создавать наборы данных из комбинаций векторов?(ii) Если нет, есть ли способ в R создать наборы данных, не импортируя их из других источников?

Большое спасибо и, пожалуйста, я новичок и не слишком изощренен в вашем ответе.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2012

Это может помочь:

salary = sample(2000:3000, 250, replace = T)
ages = sample(20:50, 250, replace = T)
marSt = sample(c("MARRIED", "SINGLE"), 250, replace = T)
# dataset = cbind(salary, ages, marSt) #WHAT YOU DID
dataset = data.frame(salary, ages, marSt) #WHAT YOU SHOULD HAVE DONE
data.reg = lm(salary~ages+marSt, data = dataset)

Также str () позволяет вам посмотреть на структуру объектов, чтобы вы могли увидеть разницу между тем, что вы и я сделали:

str(cbind(salary, ages, marSt))
str(data.frame(salary, ages, marSt))

Выход:

> str(cbind(salary, ages, marSt))
 chr [1:250, 1:3] "2388" "2530" "2518" "2450" "2008" "2502" ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:3] "salary" "ages" "marSt"
> str(data.frame(salary, ages, marSt))
'data.frame':   250 obs. of  3 variables:
 $ salary: int  2388 2530 2518 2450 2008 2502 2264 2185 2207 2048 ...
 $ ages  : int  24 21 35 31 50 39 22 21 36 29 ...
 $ marSt : Factor w/ 2 levels "MARRIED","SINGLE": 1 2 2 2 2 2 2 1 1 2 ...

EDIT: Креститель побил меня этим, но я оставляю свой ответ, поскольку он добавляет к объяснению, данному крещением

3 голосов
/ 19 февраля 2012

Вы, вероятно, хотите data.frame, а не matrix (как возвращено cbind),

dataset <- data.frame(salary, ages, marSt)

также, повтор это не аргумент sample(), вы, вероятно, имеете в виду replace=TRUE. Вы бы хорошо прочитали введение в R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...