如何整合对称数据帧的两半

时间:2019-07-18 04:56:09

标签: r dataframe

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

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

1 个答案:

答案 0 :(得分:1)

如果它们完全对称,则可以首先将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