我有两个数据帧,它们是整个矩阵的一半:
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
答案 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