首页 > 解决方案 > 如何整合对称数据框的两半

问题描述

我有两个数据框,它们是整个矩阵的一半:

library(tidyverse)
df1 <- structure(list(`Cluster1-CONTROL` = c(568L, NA, NA), `Cluster1-DAY03` = c(
  578L,
  686L, NA
), `Cluster1-DAY06` = c(735L, 840L, 1059L)), row.names = c(
  "Cluster1-CONTROL",
  "Cluster1-DAY03", "Cluster1-DAY06"
), class = "data.frame")

df1
#>                  Cluster1-CONTROL Cluster1-DAY03 Cluster1-DAY06
#> Cluster1-CONTROL              568            578            735
#> Cluster1-DAY03                 NA            686            840
#> Cluster1-DAY06                 NA             NA           1059

df2 <- structure(list(`Cluster1-CONTROL` = c(568L, NA, NA), `Cluster1-DAY03` = c(
  639L,
  686L, NA
), `Cluster1-DAY06` = c(813L, 861L, 1059L)), row.names = c(
  "Cluster1-CONTROL",
  "Cluster1-DAY03", "Cluster1-DAY06"
), class = "data.frame")


df2
#>                  Cluster1-CONTROL Cluster1-DAY03 Cluster1-DAY06
#> Cluster1-CONTROL              568            639            813
#> Cluster1-DAY03                 NA            686            861
#> Cluster1-DAY06                 NA             NA           1059

我想要做的是创建这个最终的数据框,其中df2将被翻转并放在底部df1

                 Cluster1-CONTROL Cluster1-DAY03 Cluster1-DAY06
Cluster1-CONTROL              568            578            735
Cluster1-DAY03                639            686            840
Cluster1-DAY06                813            861           1059

标签: rdataframe

解决方案


如果它们完全对称,您可以先将数据框复制df1到另一个对象中,取出上三角部分df2并将其放在新对象的下三角部分。

df3 <-df1
df3[lower.tri(df3)] <- df2[upper.tri(df2)]

df3
#                 Cluster1-CONTROL Cluster1-DAY03 Cluster1-DAY06
#Cluster1-CONTROL              568            578            735
#Cluster1-DAY03                639            686            840
#Cluster1-DAY06                813            861           1059

推荐阅读