R复制行并除以具有重复ID的值

我有一个像这样的数据框:

id val
a  10
a  50
b  30

现在,对于每个id,我想将val除以id的重复次数,然后将行复制相同的次数。因此,最终数据帧将变为:

id val
a  5
a  5
a  25
a  25
b  30

请注意,重复的ID可能不是连续的。

我该如何实现?

评论
  • 你,不配我
    你,不配我 回复

    One dplyr option could be:

    df %>%
     group_by(id) %>%
     mutate(val = val/n()) %>%
     uncount(n())
    
      id      val
      <chr> <dbl>
    1 a         5
    2 a         5
    3 a        25
    4 a        25
    5 b        30