2

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

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

这显然是行不通的。虽然,如果我首先定义newvarNA是有效的,但我会丢失通过将其指定为一个因素而获得的所有附加信息(如上):

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

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

4

1 回答 1

2

它应该工作

origdata$newvar<-subdata[match(origdata$id,subdata$id),"newvar"]
于 2013-09-28T18:20:26.167 回答