如何从数据框中选择与来自其他数据框的观察相对应的观察?

时间:2019-07-03 04:50:54

标签: r

我有一个数据集,其中包括来自Kegg的所有代谢物ID的列表,以及一个包含从样本中发现的代谢物ID的数据集。目的是使用我发现的代谢物ID从Kegg日期框架中选择ID,并仅使用我发现的ID。

这看似微不足道,但我的数据不包括实际的分子名称,而仅包括ID,而Kegg数据包括分子名称。我需要分子名称做进一步的研究,弄清楚这将节省我的时间。我试图使用filter和mutate命令。您可以在下面看到我的代码。我对r很陌生,所以也许这段代码可以正常工作,而我只是将其破坏了。

我们将有两个这样的数据帧:

kegg_data <-  data.frame("ID" = c("C00001" , "C00002" , "C00003"  , "C00004"), 
                        "molecule" = c("H20" , "ATP" , "NAD" , "NADH"))

my_data <- data.frame("ID" = c("C00002", "C00004"))                         

很显然,两个数据集中会有更多的ID。

这是我尝试过的代码:

your_kegg_IDs <-  kegg_data %>%
  filter(my_data == my_data$ID)

运行filter命令时的错误代码为: filter_impl(.data,quo)中的错误:   评估错误:因素的水平集不同。

老实说,我不知道我是否在正确的轨道上。任何帮助表示赞赏。理想的结果是以一个只有我找到的ID(包括分子名称)的数据框结尾。

1 个答案:

答案 0 :(得分:1)

不确定我是否了解,但是为什么不能仅对ID在您的数据中的kegg_data进行子集化?

my_final_data <- subset(kegg_data, kegg_data$ID %in% my_data$ID)

my_final_data
      ID molecule
2 C00002      ATP
4 C00004     NADH