【问题标题】:Want to replace certain rows in one dataframe with rows from another based on matching timestamps (both dataframes have timestamps in the same tz)想要根据匹配的时间戳将一个数据帧中的某些行替换为另一个数据帧中的行(两个数据帧的时间戳都在相同的 tz 中)
【发布时间】:2021-08-13 18:28:23
【问题描述】:

我希望能够从一个数据帧中获取一些值并将它们插入另一个数据帧(两者具有相同数量的具有相同标题的列)

我希望数据帧 1 中每一行的值根据匹配的时间戳替换数据帧 2 中的值。

对于大多数行/时间戳,我希望原始数据保留在数据帧 1 中,因此这仅适用于一组特定时间戳(数据帧 2 中的时间戳)

dplyr 能以某种方式解决这个问题吗?

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    加入data.table 可能更容易。获取除'timestamp'列('nm1' - 注意这里我们假设列名相同)之外的第一个数据集的列名,通过'timestamp'列加入on并分配相应的列(i. ) 从第二个数据集中匹配 'timestamp' 列

    library(data.table)
    nm1 <- setdiff(names(df1), "timestamp")
    nm2 <- paste0("i.", nm1)
    setDT(df1)[df2, (nm1) := mget(nm2), on = .(timestamp)]
    

    【讨论】:

    • 我同意 - 通过时间戳加入是我常规数据管理的重要组成部分,数据表为王。我有专门的脚本。当您的时间戳不准确时,我建议将 roll = "nearest" 和 mult = "first" 添加到连接中。然后添加一个 difftime 列来评估偏移量。
    • @DanSlone 是的,你是对的。不幸的是,大多数在 SO 上发帖的人都没有考虑给出任何难以准确理解问题的示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多