从 df2 中的 df1 中识别元素,然后在那些使用 R 重合的行中添加 df2 中的列

Alia_MW

我有一个包含两列(基因组)的数据框和一个包含一列(list_SSNP)的数据框。

我想要做的是在我的基因组数据框中添加第三和第四列,并为基因组中出现在 list_SSNP 和 list_SCPG 中的那些位置添加值“1”。

我正在尝试获取如下所示的输出数据帧:

Gene_Symbol       CHR        SNP     
A1BG             19q13.43             
PDE1C            12p13.31     1        

这是 Genome 内容的一部分,我包含了一个可重复的示例:

Genome <- c()
Genome$Gene_Symbol <- c("A1BG", "A1BG-AS1", "A1CF", "A2M", "PDE1C")     
Genome$CHR <- c("19q13.43", "19q13.43", "10q11.23", "12p13.31", "12p13.31")
Gene_Symbol CHR
        1   A1BG        19q13.43
        2   A1BG-AS1    19q13.43
        3   A1CF        10q11.23
        4   A2M         12p13.31
        5   PDE1C       12p13.31

这是list_SSNP的部分内容:

list_SSNP <- c("PDE1C", "IMMP2L", "ZCCHC14", "NOS1AP", "HARBI1")
    Gene_Symbol
1   PDE1C
2   IMMP2L
3   ZCCHC14
4   NOS1AP
5   HARBI1

仅使用 1 个数据框 (list_SSNP),这是我首先尝试做的,我尝试做的是循环遍历基因组数据框和基因组中的元素 i(行),如果我的 list_SSNP 的元素 i数据帧就像我的基因组数据帧中的元素 i,然后将数字 1 添加到第三列,但是当我执行此代码时,什么也没有发生。

Full_genome <- read.table("FULL_GENOME.txt", header=TRUE, sep = "\t", dec = ',', na.strings=c("","NA"), fill=TRUE)
Genome <- Full_genome[,c(2,3)]
names(Genome) <- c("Gene_Symbol", "CHR")

list_SSNP <- as.data.frame(Gene_SSNP$Gene_Symbol)

for (i in 1: dim (Genome) [1]) {
  if(list_SSNP[i] %in% Genome[i,1]){
    Genome[i,3] <- 1 
  }
}

为了进一步澄清,我已经检查过 list_SSNP 中的所有元素都出现在 Genome 中,因此绝对可以肯定这不是没有发现任何巧合的问题。

编辑:

我开始意识到我的例子没有指定 list_SSNP 和 Genome 中的条目是唯一的并且没有重复,并且 Genome 有大约 30k 行条目,而 list_SSNP 有 49。我只想在 Genome 中添加一列和一个条目在 Genome 和 list_SSNP 中都存在的那些行中的数字 1。

鸭子

我相信这会有所帮助。你可以试试这个代码:

#Data
Genome <- data.frame(Gene_Symbol = c("A1BG", "A1BG-AS1", "A1CF", "A2M", "PDE1C"),
                     CHR = c("19q13.43", "19q13.43", "10q11.23", "12p13.31", "12p13.31"),
                     stringsAsFactors = F)
list_SSNP <- c("PDE1C", "IMMP2L", "ZCCHC14", "NOS1AP", "HARBI1")
#Collapse
vecc <- paste0(list_SSNP,collapse = '|')
#Contrast
Genome$SNP <- as.numeric(grepl(pattern = vecc,x = Genome$Gene_Symbol))

输出:

  Gene_Symbol      CHR SNP
1        A1BG 19q13.43   0
2    A1BG-AS1 19q13.43   0
3        A1CF 10q11.23   0
4         A2M 12p13.31   0
5       PDE1C 12p13.31   1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据R中df1和df2之间的匹配在df1中添加新列

从 DF2 替换 DF1 中的值

如何检查df2中的对是否与R中的df1对(含)成对?

将df1列1与df2中的所有列进行比较,返回df2的索引

r在df1中添加列,并在df2中添加行数(有条件)

检查df2中的datetime列的值是否在R中的df1的datateime值之内

Pandas:如何正确处理 df2 中的行 = df1 中的列?

如果列值不在df2列中,则获取df1的行

当这些行值出现在 R 中的 df2 中时,返回 df1 的行索引

Python-检查df2列中是否存在df1列中的值

R中的df2中有1时,请替换df1中的0

从df2中提取与df1的两列信息匹配的所有行

df1 的 xy 列的值是否也出现在 df2 的 zy 列中?

根据日期时间将df2中的多行添加到df1中

在 df1 中删除也在 df2 中的行的可靠方法

组合 df1 中的值对应于 df2 中的值的行

根据df2中的索引将行保留在df1中

根据日期索引上的df1更新df2中的列

如何遍历 df1 列以查看 df2 中满足条件的频率?

如何使用 df2 中的 col 'mark' 更新 df1 中的 col 'mark'

根據 df1 rowdate 是否在 df2 和 df1 類匹配 r 中的 df2 類的兩個日期之間創建虛擬變量

为df1中的每个项目查找df2中最接近的项目

在 df1 中设置与 df2 中的值匹配的值

反向代码以df2中的查找值为条件选择df1中的vars

如果 df2 中的 loc 为 True,则 df1 中的 python 总和值

将df2中随机选择的值与df1合并

如何在PySpark中检查df1是否等于df2?

通过调用df2中列出的df1索引来创建数据框

找出有多少 df1 在 df2 中不可用