我是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中是否有任何方法可以创建数据集而无需从其他来源导入数据集?
非常感谢,请我是初学者,不要过于复杂。
答案 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 ...
修改强> 的 巴蒂斯特打败了我,但是我正在离开我的答案,因为它增加了巴蒂斯特给出的解释