R中两个DF的匹配/对齐列

克拉里纳

我在匹配R中数据框的列时遇到麻烦。我需要运行以下行:

rownames(clusterDF) <- rownames(OrderByCluster)

这两个df的行名都对应一个基因识别号。当我运行此行时,它将以与OrderByCluster中相同的顺序覆盖clusterDF的行名(它们的顺序不同)。

但是,另一列-群集号(例如1、2、3)不会随那些行名而相应地更改。也就是说,群集号与原始行名相关联,而不与新行名相关联。因此,没有将基因分配给正确的簇。

这是更改行名前后的clusterDF外观:

例如,基因20343本应位于群集1中,但是在更改行名之后将在群集2中,因为列没有相应更改。

在此处输入图片说明 在此处输入图片说明

对于上下文,我的OrderByCluster如下所示:

在此处输入图片说明

我试图查找要使用的函数,例如match函数,但我认为这不是我真正需要的?另一个想法是让clusterDF和OrderByCluster的行名具有相同的顺序(例如,升序或降序),但是我一直在查看的许多论坛帖子仅指定如何按列对dfs进行排序,而不是实际的行名。

编辑:抱歉,我对此很陌生,并且不知道dput。希望我已经做对了,但是我将clusterDF和OrderByCluster都分为了子集,这是dput的输出。

clusterDF_dput <- structure(c(2L, 2L, 1L, 2L, 2L), .Label = c("1", "2", "3"), class = "factor")

OrderByCluster_dput <- structure(c(9.51329554103103, 9.14277232387578, 12.2714405068735, 
10.706631872116, 8.62291428297462, 8.98952149388347, 8.52097250675874, 
12.3272001162907, 10.6044657262387, 8.45325504643134, 11.1333650918029, 
10.8998190141107, 14.3764779789928, 13.5802066640389, 10.1906849771101, 
11.1053464801885, 11.2180047488173, 13.7233369788605, 13.3576808929928, 
10.5510358229245, 12.7521453126162, 12.1288209268913, 15.1014057359463, 
13.0035983162112, 11.4248804834167, 12.7641683968991, 12.1443475666368, 
15.4920056830767, 12.8695811644779, 11.5307043114641), .Dim = 5:6, .Dimnames = list(
    c("231507", "100041546", "110257", "76933", "20343"), c("CD23_WE1", 
    "CD23_WE2", "CD23_Doc1", "CD23_Doc2", "EED_Doc1", "EED_Doc2"
    )))
佩德罗·法里亚

我了解以下内容:两个data.frames(clusterDFOrderByCluster)的行名负责标识每一行中描述的基因。您正在尝试匹配两个data.frames的行名,以便可以将OrderByCluster表中的信息正确连接到中描述的每个基因clusterDF

如果尝试这样做,则实际上可以通过联接操作将OrderByCluster表中的所有信息(所有列)带到clusterDFDF。连接操作将选择一个在两个表中都可用的键,并将匹配这些键。当联接计算所有匹配项时,他将根据这些键的这些匹配项从字面上联接或混合两个表。

从您提供的数据来看,OrderByCluster是数字矩阵,而clusterDF仅仅是包含因子值的向量。为了使我的代码对您有用,您必须将这些对象转换为表(data.frame)。下面的代码执行此转换。除此之外,我想您clusterDF拥有标识基因的行名,但是输出clusterDF生成的行名dput()没有这些行名,因此我生成了一组随机行名,只是为了使方法更清晰。请注意,在这组行名中,是中定义的三个基因OrderByCluster,因此我们最终希望联接将带来来自这三个基因的信息OrderByCluster

OrderByCluster <- as.data.frame(OrderByCluster_dput)
clusterDF <- as.data.frame(clusterDF_dput)
row.names(clusterDF) <- c("20130", "76933", "231507", "20343", "203")

因此,由于您的键或换句话说,标识基因的值位于表的行名中,因此您需要将这些行名带到表的行中,因为作为行名,它们只是对象的属性。您可以通过row.names()函数与mutate()函数结合使用,将这些行名带入data.frame的列,两者均来自dplyr包。我在row_number()函数之前使用过,但是我相信他会带来与您想要的输出不同的输出。

在下面的示例中,我将这些行名带入row_idcolunm,然后对负责join(left_join()的函数说,两个表中的键都在row_idcolunm中。所以left_join()功能将首先匹配的值row_id两个表中colunm,再一个,把所有的信息OrderByCluster,到了clusterDF,因此这些比赛。如果left_join()函数在两个表之间的某行中找不到匹配项,则它将用NA(不可用)值填充该行。

这是将行名带到表的行的代码

library(dplyr)

clusterDF <- mutate(
  clusterDF,
  row_id = row.names(clusterDF)
)

OrderByCluster <- mutate(
  OrderByCluster,
  row_id = row.names(OrderByCluster)
)

这是进行联接操作的代码

clusterDF <- left_join(
  clusterDF,
  OrderByCluster,
  by = "row_id"
)

这是结果

head(clusterDF)

  clusterDF_dput row_id  CD23_WE1  CD23_WE2 CD23_Doc1 CD23_Doc2 EED_Doc1
1              2  20130        NA        NA        NA        NA       NA
2              2  76933 10.706632 10.604466  13.58021  13.35768 13.00360
3              1 231507  9.513296  8.989521  11.13337  11.10535 12.75215
4              2  20343  8.622914  8.453255  10.19068  10.55104 11.42488
5              2    203        NA        NA        NA        NA       NA
  EED_Doc2
1       NA
2 12.86958
3 12.76417
4 11.53070
5       NA

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过R中的值(不加入)来匹配两个df?

来自分类Dev

配对两个阵列

来自分类Dev

如何创建带有两个对齐列的WPF ComboBox(第一个列的自动宽度)?

来自分类Dev

如何创建带有两个对齐列的WPF ComboBox(第一个列的自动宽度)?

来自分类Dev

确定两个网格是否在 R 中完全匹配

来自分类Dev

如何配对两个不同集合中的元素?

来自分类Dev

在HTML中对齐两个表

来自分类Dev

在 TH 中对齐两个 DIV

来自分类Dev

根据R中两个数据框的两列中的匹配对名称,将值添加到另一个数据框的其他值中

来自分类Dev

在flex容器的两行中对齐列

来自分类Dev

如果两个df中的两个“年龄”变量在R中匹配,如何将新列添加到数据帧中,该列是变量“ hr”的-ln?

来自分类Dev

R:匹配两个向量的问题

来自分类Dev

我有两个匹配的数组。如何将值配对而不将两个相同的值配对在一起?

来自分类Dev

在matlab中匹配两个矩阵

来自分类Dev

如何基于r中两个df的条件求和另一个df中的值?

来自分类Dev

在两个字符串中查找匹配对

来自分类Dev

匹配PHP中两个数组的索引以配对数据

来自分类Dev

R:当两个条件中的任何一个匹配时,合并两个数据帧

来自分类Dev

将两个表中的术语配对并插入一个表中(硬)

来自分类Dev

在C输出中对齐列

来自分类Dev

在ASCII文件中对齐列

来自分类Dev

在引导程序中对齐列

来自分类Dev

R匹配两个列表并找到匹配的元素

来自分类Dev

如何获得R中两个向量之间的元素的第n个匹配项?

来自分类Dev

在R中合并两个具有不同日期格式的df

来自分类Dev

在同一行中的两个<td>标签中对齐两个元素

来自分类Dev

对齐列和行以匹配显示宽度

来自分类Dev

查找两个表之间的匹配对并返回要插入的第三个值

来自分类Dev

在Android中对齐两个文本视图的基线

Related 相关文章

  1. 1

    如何通过R中的值(不加入)来匹配两个df?

  2. 2

    配对两个阵列

  3. 3

    如何创建带有两个对齐列的WPF ComboBox(第一个列的自动宽度)?

  4. 4

    如何创建带有两个对齐列的WPF ComboBox(第一个列的自动宽度)?

  5. 5

    确定两个网格是否在 R 中完全匹配

  6. 6

    如何配对两个不同集合中的元素?

  7. 7

    在HTML中对齐两个表

  8. 8

    在 TH 中对齐两个 DIV

  9. 9

    根据R中两个数据框的两列中的匹配对名称,将值添加到另一个数据框的其他值中

  10. 10

    在flex容器的两行中对齐列

  11. 11

    如果两个df中的两个“年龄”变量在R中匹配,如何将新列添加到数据帧中,该列是变量“ hr”的-ln?

  12. 12

    R:匹配两个向量的问题

  13. 13

    我有两个匹配的数组。如何将值配对而不将两个相同的值配对在一起?

  14. 14

    在matlab中匹配两个矩阵

  15. 15

    如何基于r中两个df的条件求和另一个df中的值?

  16. 16

    在两个字符串中查找匹配对

  17. 17

    匹配PHP中两个数组的索引以配对数据

  18. 18

    R:当两个条件中的任何一个匹配时,合并两个数据帧

  19. 19

    将两个表中的术语配对并插入一个表中(硬)

  20. 20

    在C输出中对齐列

  21. 21

    在ASCII文件中对齐列

  22. 22

    在引导程序中对齐列

  23. 23

    R匹配两个列表并找到匹配的元素

  24. 24

    如何获得R中两个向量之间的元素的第n个匹配项?

  25. 25

    在R中合并两个具有不同日期格式的df

  26. 26

    在同一行中的两个<td>标签中对齐两个元素

  27. 27

    对齐列和行以匹配显示宽度

  28. 28

    查找两个表之间的匹配对并返回要插入的第三个值

  29. 29

    在Android中对齐两个文本视图的基线

热门标签

归档