【问题标题】:Assigning data frame column values probabilistically以概率方式分配数据框列值
【发布时间】:2015-01-30 14:03:03
【问题描述】:

我正在尝试创建一个名为“students”的数据框,其中包含四个变量:Gender、Year(大一、大二、大三、大四)、Age 和 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 行中分配的右侧更改为可以概率分配年龄的东西。这就是我不知道该怎么做。

在相关说明中,如果有比我正在考虑的更好的方法来做到这一点,我会很高兴听到这个消息。

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

【问题讨论】:

    标签: r random random-sample


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-29
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 2020-01-30
      相关资源
      最近更新 更多