R:是否可以将矢量组合转换为数据集?

时间:2012-02-19 07:32:36

标签: r vector dataframe combinations sample

我是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 个答案:

答案 0 :(得分:3)

您可能想要data.frame而不是matrix(由cbind返回),

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

另外,重复是而不是 sample()的参数,你可能意味着replace=TRUE。你最好阅读R的介绍。

答案 1 :(得分:3)

这可能有所帮助:

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 ...

修改 的 巴蒂斯特打败了我,但是我正在离开我的答案,因为它增加了巴蒂斯特给出的解释