R:如何在数据帧中查找和提取值
我在R中有一个字符向量,有330000个值,例如 amp184660R:如何在数据帧中查找和提取值,r,bioinformatics,R,Bioinformatics,我在R中有一个字符向量,有330000个值,例如 amp184660 amp947 amp53303 amp364886 amp121615 和这样的数据框: 我想在数据框的第一列中找到我的字符向量中的每个值,即“分析名称”,然后将其相应的染色体位置,即“色度”输出到一个新的向量中。我想尽快做到这一点,因为有大约330k的条目,通过grep在一个循环中完成这一点大约需要12个小时 有什么想法吗? 谢谢 Jason.#假设df称为数据帧,向量称为字符向量 vector_frame我建议%中的%,
amp947
amp53303
amp364886
amp121615 和这样的数据框: 我想在数据框的第一列中找到我的字符向量中的每个值,即“分析名称”,然后将其相应的染色体位置,即“色度”输出到一个新的向量中。我想尽快做到这一点,因为有大约330k的条目,通过grep在一个循环中完成这一点大约需要12个小时 有什么想法吗? 谢谢 Jason.
#假设df称为数据帧,向量称为字符向量
vector_frame我建议%
中的%,这可能比合并
更快。下面是一个玩具示例:
## Assume that "x" is your data.frame
set.seed(1)
x <- data.frame(Assay = sample(letters, 30, replace = TRUE),
Chrom = 4, ChromPos = rnorm(30))
## And that "y" is your vector you want to match
y <- c("a", "b", "c", "d", "e")
## Here's how you can use %in%
x[x$Assay %in% y, ]
# Assay Chrom ChromPos
# 10 b 4 0.6198257
# 12 e 4 -0.1557955
# 24 d 4 1.1000254
# 27 a 4 -0.2533617
## And can also directly extract a specific column
x[x$Assay %in% y, "ChromPos"]
# [1] 0.6198257 -0.1557955 1.1000254 -0.2533617
##假设“x”是您的数据帧
种子(1)
x以防万一运行时仍然是一个问题,使用数据。table
包比merge
快约100倍,比%in%
快50倍:
library(data.table)
dt <- as.data.table( yourDataFrame )
setkey( dt, Assay )
dt[ J(yourVector) ]
库(data.table)
谢谢!。合并后如何保存新数据帧?只需输入new\u df\u Name,显然,如果您希望在新df中有更多列,您可以执行合并(vector\u frame,your\u data\u frame,by=“Assay Name”)[,1:3]
library(data.table)
dt <- as.data.table( yourDataFrame )
setkey( dt, Assay )
dt[ J(yourVector) ]