r - 如何整合对称数据框的两半
问题描述
我有两个数据框,它们是整个矩阵的一半:
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
解决方案
如果它们完全对称,您可以先将数据框复制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
推荐阅读
- django - Django 在退出视图或导航到与当前 URL 不同的 URL 时运行函数
- c - 查找数组中的哪些值至少出现 x 次
- d3.js - 在 D3 中可视化来自不同 csv 文件的数据
- html - 页面内容不会在具有 RTL 属性的移动视图中显示为全宽
- jquery - 在“422(无法处理的实体)”Laravel7 中验证错误时出现错误
- javascript - 未捕获的 ReferenceError:未定义 mahi
- python - 如何在临时变量中设置一个大的 Numpy 来编写视频?
- google-cloud-platform - 无法从文件“/root/.google_libcloud_auth.gcp-cm-tool”中读取缓存的身份验证令牌
- azure-sqldw - Azure Synapse:将一个 n 长度的分隔列表列转换为 n 个不同的列
- python - 将 JSON 数据加载到 csv Spotify 相关艺术家