【问题标题】:How to add a column from a subsetted dataframe to the original dataframe in R?如何将子集数据框中的列添加到 R 中的原始数据框中?
【发布时间】:2013-09-28 18:09:04
【问题描述】:

我想将数据帧(它是另一个数据帧的子集)中的一列添加到原始数据帧中。 (我不得不使用该子集进行另一次分析)。请考虑这个例子:

origdata <- data.frame(id=c(1:5), val=c("a", "b", "c", "d", "e"))
subdata <- origdata[origdata$id>3, ]
subdata$newvar <- factor(c(1, 2), levels=c(1, 2), labels=c("one", "two")) 
### Value for newvar derived from other analysis

现在我想将包含newvar 的列添加到原始数据框中,并为所有不属于子集的情况填写NAs。我的第一个想法是使用

origdata[origdata$id>3, ]$newvar <- subdata$newvar

这显然行不通。虽然,如果我首先将 newvar 定义为 NA 它可以工作,但我会丢失通过将其指定为一个因素(如上)获得的所有其他信息:

origdata$newvar <- NA
origdata[origdata$id>3, ]$newvar <- subdata$newvar

您知道解决此问题的简单方法吗?如果可能的话,我不想使用merge,因为我有很大的数据框并且merge 非常耗时。另外,我想保留newvar 作为一个因素。

【问题讨论】:

  • 所以澄清一下,您已经尝试过merge,它可以满足您的需求,但您正在寻找另一种选择?
  • 是的,我尝试了merge ,但它需要的时间不合理。
  • 如果速度是个问题,您是否尝试过转换为data.tables,将键设置为前两列,然后合并?
  • 不,到目前为止我还没有使用过data.table。看起来很有希望。

标签: r variables dataframe subset


【解决方案1】:

它应该可以工作

origdata$newvar<-subdata[match(origdata$id,subdata$id),"newvar"]

【讨论】:

  • 你是对的 subset 是数据框的错误名称。我在原始问题中对此进行了更改。
猜你喜欢
  • 2013-10-04
  • 2023-01-16
  • 1970-01-01
  • 2015-06-29
  • 2014-06-06
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多