我有一个数据集,其中包括来自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(包括分子名称)的数据框结尾。
答案 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