【问题标题】:merging datatables in R based on conditions根据条件合并R中的数据表
【发布时间】:2020-01-03 19:58:14
【问题描述】:

首先,我试图通过 R 的数据表库的文档找到解决方案,但没有帮助。我有两个具有关键性别和体重的数据数据表。我如何将它们与条件 t1$gender == t2$gendert1$weight <= t2$weight 合并?

这是表格:

t1 <- data.table(ID = c(1:6), gender = c("m", "m", "m", "m", "f", "f"), w = c(1:3))

t2 <- data.table(gender = c("m", "f", NA), w = c(1, 2, 3), z = c(4, 2, 3))

【问题讨论】:

    标签: r datatable


    【解决方案1】:

    我们可以使用非等连接

    library(data.table)
    setDT(t1)[t2, .SD, on = .(gender, weight <= weight)]
    

    如果我们也对“z”列感兴趣

    setDT(t1)[t2, c(.SD, .(z = z)), on = .(gender, w <= w), nomatch = FALSE]
    #   ID gender w z
    #1:  1      m 1 4
    #2:  4      m 1 4
    #3:  5      f 2 2
    

    【讨论】:

    • 它有帮助,但它不会返回除这两个以外的任何其他列,我是 R 的新手,为此。
    • @ttosun 如果没有可重复的示例和您的期望,则不清楚。如果你想要't2'中的某个列,则使用i.,或者如果它是唯一列,只需指定该列的名称
    • 我有一个额外的列 ID 和 z 但它没有在终端打印出来。
    • @ttosun 你用这个代码得到什么setDT(t1)[t2, .(ID, z), on = .(gender, weight &lt;= weight)]
    • 哦,谢谢你的回答,最后 z 列只出现在第二个数据表中,当我们使用合并函数时,它不会产生问题,但在这里它会抛出一个错误,因为 z 不存在于一个表中。为什么使用合并函数不会因为z而引发错误?
    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 2017-12-30
    • 2021-11-28
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多