【问题标题】:Copying over the values of a column, based on the values of another column根据另一列的值复制列的值
【发布时间】:2016-09-10 00:14:27
【问题描述】:

我有一个数据集,“数据”,其中每隔几行相邻的行都有相同的“id”,这是数据集中的一个参数。我有另一个数据集“otherData”,具有相同的 id 值,但每个 id 值只有一行。两个数据集中的 id 顺序相同。

我想将“newColumn”列从 otherData 复制到数据,并根据 id 值映射它。这是我目前拥有的:

sapply(otherData$id, function(id)
    data$newColumn[data$id == id, ] <- otherData[otherData$id == id, ]$newColumn
)

但是,sapply 的速度慢得令人作呕,因为它会遍历每个唯一的 id 值,并且必须在 data.frame 中找到具有该值的每一行。

有更快的选择吗?我想也许我可以利用具有相同“id”值的所有行彼此相邻的事实。

【问题讨论】:

    标签: r dataframe apply sapply


    【解决方案1】:

    只需合并两个数据框,但过滤otherData 中的列以加入 id 键和 newColumn

    newData <- merge(data, otherData[c("id", "newColumn")], by=c("id"))
    

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多