一个数据帧列来过滤另一个

时间:2015-03-04 17:24:17

标签: r

我有两个数据帧。这是我的第一个例子:

    index   anom
1   50      400
2   60      600
3   70      550
...

之前的数据框有一列'索引',这是我需要从以下数据框示例中提取的行:

    date   value
1   5/2/14 200
2   5/3/14 300
3   5/4/14 400
...

基本上,我需要将一个数据帧列(第一个数据帧中的'索引列)放入某种列表中。然后我需要使用该列表来选择第二个数据帧中的行。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

尝试:

d.a <- read.table(file=textConnection("index   anom
1   2      400
2   3      600
3   1      550
"))

d.b <- read.table(file=textConnection("date   value
1   5/2/14 200
2   5/3/14 300
3   5/4/14 400
"))

merge(d.a, d.b, by.x="index", by.y="row.names")

答案 1 :(得分:0)

所以,为了清楚起见,我们假设你有:

df1 <- data.frame(index=c(50, 60, 70), anom=c(400,600,550))
df2 <- data.frame(index=c(20, 30, 40, 50, 60, 70), date=c("4/29/14", "4/30/14", "5/1/14", "5/2/14","5/3/14","5/4/14"), value=c(1,2,3,200,300,400))

您没有在数据框2的示例中列出索引,但我认为它就在那里。然后,使用df1中的索引在df2中进行数据的内连接并返回感兴趣的列:

df3 <- merge(data.frame(index=df1$index), df2)[,c("date","value")]
print(df3)
    date   value
1   5/2/14 200
2   5/3/14 300
3   5/4/14 400

这是你所希望的吗?