Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从数据帧中提取两列并将其与第二个数据帧合并_R_Database - Fatal编程技术网

R 从数据帧中提取两列并将其与第二个数据帧合并

R 从数据帧中提取两列并将其与第二个数据帧合并,r,database,R,Database,我在处理数据帧时遇到了一些问题 我有一个数据帧(df1,参见图1),从中我需要从最后一列(注释)中提取ID,我可以使用下一行: genes <- sapply(df1$Comment, function(x){ paste(substring(x, as.numeric(gregexpr("SL1344_RS", x)[[1]]), as.numeric(gregexpr("SL1344_RS", x)[[1

我在处理数据帧时遇到了一些问题

我有一个数据帧(df1,参见图1),从中我需要从最后一列(注释)中提取ID,我可以使用下一行:

genes <- sapply(df1$Comment, function(x){
  paste(substring(x, as.numeric(gregexpr("SL1344_RS", x)[[1]]), 
                  as.numeric(gregexpr("SL1344_RS", x)[[1]]) + 13), collapse=";")
  })
现在我需要将这个ID和它们对应的频率值合并在“freq”列下,这样我就得到了两列,一列是ID,另一列是频率值

你可以通过简单的行动来实现

genes.freq <- cbind(genes, df1$freq)

<代码> Ge.FrqHi,请不要在堆栈溢出上使用代码/数据的图像,考虑我们的指南如何提供A,您可能想阅读:这确实解决了这个问题,谢谢您的快速回答!!我有一个新的小要求。有些基因有一个复杂的ID;例如,“SL1344_RS09335;SL1344_RS09330”,是否有办法将它们分成两个单独的行,其中前一个频率值适用于两个行?提前谢谢你是说分手?如果是,你应该提出一个新问题。如果你想让我帮忙,试着把我链接起来,或者把问题的链接贴在这里作为评论。请添加一个具有预期输出的简单玩具示例。看看我是如何创建df1的。祝你一切顺利!PS:在任何cae中,如果您不介意的话,您可能希望查看strsplit(df$column with the string,“;”)将我的答案视为有用。谢谢
genes.freq <- cbind(genes, df1$freq)
names <- df2$Product[ match(genes.freq$gene, df2$Code) ]

genes.freq.names <- cbind(
    genes.freq, names)
df1 <- data.frame(
  gene = c("SL1344_RS000040", "SL1344_RS000095", "SL1344_RS000105"),
  freq = c(7, 21 , 51))

df2 <- data.frame(
  code = c("SL1344_RS000095", "SL1344_RS000040", "SL1344_RS000105"),
  product = c("Product C", "Product A", "Product B"))

df1$Product.Names <- df2$product[ match(df1$gene, df2$code) ]

df1