我有这样的情况:data.frame1(240列,行数可变):

  COL1 COL2 COL3 aeh bfi cgl d 

和data.frame2

  Gene VAL a 3 b 7 c 0.5 d 3.7 e 9.08 f 1.3 ... ... 

我想将data.frame2的第一个data.frame的每个COL(以及第二个data.frame的第一列)进行匹配和子集化,以便获得以下输出:

出:data.frame3

  COL1 VAL COL2 VAL a 3 e 9.08 b 7 f 1.3 ... ... .... .... 

有什么建议吗?

谢谢

#1楼 票数:1 已采纳

这可以通过lapply函数来完成:

data.frame1 <- data.frame(COL1 = letters[1:3], COL2 = c(NA, letters[5], NA))
data.frame2 <- data.frame(Gene = letters[1:6], VAL = rnorm(6))

do.call("cbind",
  lapply(data.frame1,
    function(x) { VAL <- rep(NA, ncol(data.frame1));
      VAL[!is.na(x)] <- data.frame2$VAL[data.frame2$Gene %in% na.omit(x)];
      return(data.frame(x, VAL)) }))

#  COL1.x   COL1.VAL COL2.x  COL2.VAL
#1      a  0.1601884   <NA>        NA
#2      b -0.2035409      e -1.535597
#3      c -0.6661004   <NA>        NA

  ask by Elb translate from so

未解决问题?本站智能推荐:

1回复

子集大于匹配项

我想子集一个数据框,我这样做: 令我惊讶的是, test2对象在test向量中具有比TRUE多的行。 我认为这可能是[] 。 我尝试了子集: 但是它的行数与以前的代码相同。 有什么解释吗? 数据很大,所以我不发布它,但是不幸的是我没有做一个可重复的例子。 数据集
4回复

如何匹配和替换列名的子集

我试图用更具描述性的标签替换数据框中的一些(但不是全部)列名。 我有一个带有长名称的向量,需要匹配并替换当前相关的列名称。 更详细地: 我有一个包含文本和数字列的数据框。 例如 所以看起来像这样: 对于某些列标签,我还有一个较长标签的向量: 如果有匹配的长
2回复

R:子集匹配的单词

这里, 我想子集a基于b 。 我的首选答案是: 在R中如何做到这一点?
2回复

发生匹配后的子集

我有一个像这样的数据框(特别是data.frame包含50列): 另一个像这样的data.frame(具体来说data.frame包含50列): 我想要以下输出: 谁能帮我吗? 基本上,在R找到data.frame 1中的“ 0.1365”和dat
3回复

通过行进ID将行与子集匹配

我有两个数据框 我试图将df1中的每个地址与df2中具有匹配Id每个地址进行匹配,如果匹配则返回True否则返回False 。 因此结果将为TRUE, FALSE, FALSE
1回复

R子集匹配连续块

我有一个数据框。 我想基于变量k子集连续块。 这将是一种标准方法。 因此,上面的子集显然无法按我预期的方式工作。 有什么优雅的方法可以得到这些结果吗?
1回复

子集和组合/匹配数据

我有一个包含4列的数据框...日期,小时,位置,值。 我想对数据进行的处理是针对每个唯一的日期/小时/位置提供摘要统计信息。 这看起来很容易,因为我可以 然后从x获取我想要的任何摘要统计信息。 但是,棘手的是,我还想从上述值的每个差异中获取摘要统计信息。 因此,例如,我想获取
1回复

基于部分匹配列的子集 df

我想根据两列之间的部分匹配对我的 df 进行子集化。 我的 df 的一个例子: AB value 1 ABCDEFG CDEF 25 2 HIJKLMN CDEF 36 3 OPQRST CDEF 21 4 ABCDEFG KLMN 25 5 HIJKLMN KLMN 69 6 OPQRST KLM