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循环或使用%运算符%,但任何和所有的帮助将不胜感激...
答
在这种情况下,尝试:
输出< - 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
为什么?你如何过滤?您的示例实际上并不包含任何执行该操作的尝试,因此很难看到您要做什么。你能举一个例子过滤器吗? – 2014-12-05 19:19:21
如果你只是想在df1中创建df2中这些元素的data.frame,为什么不呢:output 2014-12-05 19:20:31
@OliverKeyes这正是我所需要的 - 为什么不复制和粘贴作为答案,我会接受它。 – gh0strider18 2014-12-06 00:44:47