【问题标题】:How to replicate observations as a function of the values of another variable如何将观察结果复制为另一个变量的值的函数
【发布时间】:2019-05-16 18:30:13
【问题描述】:

我想根据变量 iptw 的值复制观察结果,以创建伪总体以进行进一步分析。

例如,如果iptw=4.5,则应创建weight=5,并将观察/行乘以5。同样,如果iptw=2.3,则weight=2,该行乘以2,即相当于将相应的观察值两次添加到数据框中。

这是我的数据集:

dtNEW <- data.table(id = 1:4, x1 = 10:13, x2=21:24, iptw=c(2.3,0.6,4.5,0.1))

有一个类似的问题here,但那里的解决方案没有回答我的问题。

【问题讨论】:

    标签: r dataframe dataset


    【解决方案1】:

    另一个选项是uncount 来自tidyr

    library(tidyr)
    uncount(dtNEW, round(iptw))
    #    id x1 x2 iptw
    #1:  1 10 21  2.3
    #2:  1 10 21  2.3
    #3:  2 11 22  0.6
    #4:  3 12 23  4.5
    #5:  3 12 23  4.5
    #6:  3 12 23  4.5
    #7:  3 12 23  4.5
    

    【讨论】:

    • 非常感谢@akrun。这个解决方案很棒。
    【解决方案2】:

    假设你想复制第 i 行 round(iptw[i]) 次:

    dtNEW[rep(1:.N, round(iptw)), ]
    

    给予:

       id x1 x2 iptw
    1:  1 10 21  2.3
    2:  1 10 21  2.3
    3:  2 11 22  0.6
    4:  3 12 23  4.5
    5:  3 12 23  4.5
    6:  3 12 23  4.5
    7:  3 12 23  4.5
    

    【讨论】:

    • 非常感谢@G。格洛腾迪克。该解决方案有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多