如何将子集化数据框中的列添加到R中的原始数据框?

时间:2013-09-28 18:09:05

标签: r variables dataframe subset

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

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的列添加到原始数据框中,并为所有不属于该子集的情况填写NA s。我的第一个想法是使用

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

这显然不起作用。但是,如果我首先将newvar定义为NA它可以正常工作,但我会失去通过将其指定为因子而获得的所有其他信息(如上所述):

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

你知道一个简单的解决办法吗?如果可能,我不想使用merge,因为我有大型数据帧,merge非常耗时。另外,我想将newvar作为一个因素。

1 个答案:

答案 0 :(得分:2)

它应该有用

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