r - 从 R 中的数据框创建相关矩阵
问题描述
我有一个看起来像这样的相关数据框(尽管我的真实数据中有大约 15,000 行)
phen1<-c("A","B","C")
phen2<-c("B","C","A")
cors<-c(0.3,0.7,0.8)
data<-as.data.frame(cbind(phen1, phen2, cors))
phen1 phen2 cors
1 A B 0.3
2 B C 0.7
3 C A 0.8
这是在外部创建并读入 R 的,我想将此数据帧转换为相关矩阵,其中 phen1 和 2 作为该矩阵的行和列的标签。我只计算了下三角形或上三角形的值,而诊断则没有 1。所以我希望最终结果是一个完整的相关矩阵,但第一步可能是创建下/上三角形,然后转换为我认为的完整矩阵。我不确定如何执行这一步。
此外,结果可能不是直观的顺序,但我不确定这是否重要,但理想情况下,我想要一种方法来做到这一点,它使用 phen1 和 phen 2 中的标签来确保矩阵具有正确的值如果这有意义的话,在正确的地方?
基本上为此,我想要这样的最终结果:
A B C
A 1 0.3 0.8
B 0.3 1 0.7
C 0.8 0.7 1
解决方案
这是基础 R 中的另一个,我们在其中创建了一个对称的数据框,与和相同,data
但列倒置。然后我们使用得到一个相关矩阵并将对角线设置为1。phen1
phen2
xtabs
data1 <- data.frame(phen1 = data$phen2, phen2 = data$phen1, cors = data$cors)
df <- rbind(data, data1)
df1 <- as.data.frame.matrix(xtabs(cors ~ ., df))
diag(df1) <- 1
df1
# A B C
#A 1.0 0.3 0.8
#B 0.3 1.0 0.7
#C 0.8 0.7 1.0
数据
phen1<-c("A","B","C")
phen2<-c("B","C","A")
cors<-c(0.3,0.7,0.8)
data<- data.frame(phen1, phen2, cors)
推荐阅读
- angular - Angular js数字格式逗号
- python - 如何解决错误“sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 5,提供了 8 个”
- r - 如何合并每个 ID 的波段以在 R 中创建两个多波段 TIFF?
- python - 如何从 tkinter python 的任务栏中删除 gui 图标
- node.js - 无法连接到 DB mongoose 连接
- python - 麦克风没有在听
- php - WooCommerce order_key 总是唯一的吗?
- scala - 由于 ignite-spark lib 依赖问题,无法运行 Ignite-Scala sbt 代码
- python - Flask Opencv Recode 迷你视频剪辑
- javascript - 返回具有一个旧值的新组合值数组