以概率方式分配数据框列值

Assigning data frame column values probabilistically

我正在尝试创建一个名为 "students" 的数据框,其中包含四个变量:性别、年份(大一、大二、大三、大四)、年龄和 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    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 行中赋值的右侧更改为将按概率分配年龄的内容。那就是我不知道该怎么做。

与此相关,如果有比我正在考虑的方法更好的方法,我将不胜感激。

最后一点,我用 Google 搜索了整个网络,查询了 Reddit 和 Talk Stats 上的 R 论坛,并搜索了该网站上的 R 标签,但都无济于事。我不敢相信我是第一个想要做这样的事情的人,所以我突然想到,也许我对查询的措辞有误。如果是这样的话,也将不胜感激。

像这样使用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