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

时间:2015-01-30 14:03:03

标签: r random random-sample

我正在尝试创建一个名为“学生”的数据框,其中包含四个变量:性别,年份(新生,大二,初级,高级),年龄和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标签,但都无济于事。我不敢相信我是第一个想要做这样的事情的人,所以我觉得我可能会错误地判断查询。如果是这样的话,那里的任何指导也会受到赞赏。

1 个答案:

答案 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