我正在尝试创建一个名为“学生”的数据框,其中包含四个变量:性别,年份(新生,大二,初级,高级),年龄和GPA。我们的想法是建立一个数据框,说明四个测量级别:名义,序数,间隔和比率。
此时它看起来像这样:
ID Gender Year Age GPA
1 Male Sophomore 0 3.9
2 Male Junior 0 3.3
3 Female Junior 0 3.6
4 Male Freshman 0 3.1
5 Female Senior 0 2.9
我遇到了Age问题。我希望根据概率分配年龄。例如,如果一个学生是大一新生,我希望将Age分配给以下几行:
Age Probability
14 .47
15 .48
16 .05
我有一个功能就是这样设置:
1: Age <- function(df) {
2: for (i in 1:nrow(df) {
3: if (df[i, 2] == "Freshman") {
4: df[i, 3] = 15
5: } else if {
6: continue through the years
7: }
8: }
9: }
我的想法是,我想将第4行中任务的右侧更改为将概率性地分配年龄的内容。这就是我无法弄清楚该怎么做。
在一个相关的说明中,如果有更好的方式来做这件事比我正在考虑的那样,我会很感激听到这一点。
最后一点,我在网上搜索了一下,查询了Reddit和Talk Stats上的R论坛,并搜索了这个网站上的R标签,但都无济于事。我不敢相信我是第一个想要做这样的事情的人,所以我觉得我可能会错误地判断查询。如果是这样的话,那里的任何指导也会受到赞赏。
答案 0 :(得分:3)
使用sample
这样的功能:
sample(14:16, size=1,prob=c(0.47, 0.48, 0.05))
## [1] 14
sample(14:16, size=10,rep=TRUE,prob=c(0.47, 0.48, 0.05))
## [1] 14 14 15 14 15 16 15 15 15 15