将data.frame与向量匹配

时间:2017-11-12 09:09:51

标签: r match

如果数据如此:

p <- c(1,2,3,4)
x <- c(2,3,4)
y<-c(10,20,12)
data<-cbind(x, y)

#     x  y
#[1,] 2 10 
#[2,] 3 20 
#[3,] 4 12 

我想在p上匹配x,所以我们有结果

#     x  y 
#[1,] 0  0 
#[2,] 2 10
#[3,] 3 20
#[4,] 4 12 

如何在p作为对照后匹配此数据,并添加0 0,因为第一个单元格中的p与x的第一个单元格不匹配?

1 个答案:

答案 0 :(得分:0)

使用基数R我们要做的是创建一个包含三列x,y和p的data.frame,其中p与x相同。然后我们只用p创建另一个data.frame,key。现在我们将合并作为完全外部联接,这将保持data中不匹配key的所有行。我们留下了一个带有三列p,x,y的data.frame,其中x和y是NA。我们将NA值替换为0,然后您可以选择删除p列。

data = data.frame(x,y,p=x)
key = data.frame(p)
result = merge(key,data,by="p",all=T)
result[is.na(result)] = 0