R - 对于数据帧中的值,创建一个新的数据帧,其值为

问题描述:

我在引用df过滤掉另一个df中的值以保存新的df时遇到问题。R - 对于数据帧中的值,创建一个新的数据帧,其值为

一个例子:

df1 <- c("a", "b", "c", "d") 
value <- c(1, 2, 3, 4) 
df1 <- as.data.frame(cbind(df1, value)) 
names(df1) <- c("id", "value") 

df2 <- c("a", "b") 
names(df2) <- c("id") 

我希望看到的是最终数据集是这样的:

id value 
a 1 
b 2 

我不知道这是否是一个for循环或使用%运算符%,但任何和所有的帮助将不胜感激...

+0

为什么?你如何过滤?您的示例实际上并不包含任何执行该操作的尝试,因此很难看到您要做什么。你能举一个例子过滤器吗? – 2014-12-05 19:19:21

+1

如果你只是想在df1中创建df2中这些元素的data.frame,为什么不呢:output 2014-12-05 19:20:31

+1

@OliverKeyes这正是我所需要的 - 为什么不复制和粘贴作为答案,我会接受它。 – gh0strider18 2014-12-06 00:44:47

在这种情况下,尝试:

输出< - DF1 [DF1的$ id%的%C( “A”,“B “),]

对于更广义的情况:

match_ids <- c("a","b","another ID","yet another ID") 
output <- df[df$id %in% match_ids] 

首先确保df2是一个数据帧。

df2 <- data.frame(id=c('a', 'b')) 

然后通过ID合并:

res <- merge(df1, df2, by='id') 

> res 
    id value 
1 a  1 
2 b  2