首页 文章

R:具有公共列名的cbind数据帧

提问于
浏览
-3

使用具有通用名称的几列来对两个数据帧(相等行数)进行绑定通常会导致更改了公共名称的data.frame(例如NameA.1,NameB.1等)以避免任何问题 .

我注意到即使名称已经改变,也有数据替换 . 具体来说,生成的data.frame包含来自所有列中具有相同名称的第一个data.frame的数据,即使是那些应该具有来自第二个data.frame的数据的数据 .

这个很容易克服,因为可以在cbind之前更改名称,但它可能会在结果中隐藏错误 .

------编辑----我将尝试提供一个例子:

df1是:

row     seqnames    start   end     width   strand  Region  Extra1
    1       chr10       8111    8111    172      *      123      456
    2       chr11       8112    8112    173      *      123b     456b

和df2是:

row     seqnames    start   end     width   strand  Whatever1 Whatever2
    1       chr12       9111    9111    174      +      ABC      EFG
    2       chr13       9112    9112    175      +      ABCb     EFGb

我执行cbind并得到:

row     seqnames    start   end     width   strand  Region  Extra1  seqnames.1  start.1 end.1   width.1 strand.1 Whatever1 Whatever2
    1       chr10       8111    8111    172      *      123      456    chr10       8111    8111    172      *        ABC        EFG
    2       chr11       8112    8112    173      *      123b     456b   chr11       8112    8112    173      *        ABCb       EFGb

第二部分中的值属于df1而不是df2 . 这仅发生在df1和df2中具有相同名称的列中 . 它们已被自动正确重命名,但它们的数据已从第一个df重复出现 .

问题:这是正常的行为吗?

我希望这有帮助

再次感谢你

1 回答

  • 4

    不确定您的问题是什么,但是您可以为每个合并对象的列指定自己的列前缀,并使用 cbind 的命名参数:

    data('cars')
    cars2=cbind(DataSet1=cars, DataSet2=cars)
    head(cars2)
    # DataSet1.speed DataSet1.dist DataSet2.speed DataSet2.dist
    # 1              4             2              4             2
    # 2              4            10              4            10
    # 3              7             4              7             4
    # 4              7            22              7            22
    # 5              8            16              8            16
    # 6              9            10              9            10
    

相关问题