r - R:多列(变量)上多行(对象)之间的相关矩阵
问题描述
我正在处理多列(变量)上多行(对象)的数据框。我想看看是否有任何行(对象)是相关的。我已经阅读了 corr() 并且似乎对于一个变量,我可以转置我的数据帧并将其输入 corr() 函数。但是如何处理每个观察/对象的多个变量?最终目标是在热图上绘制相关矩阵以吸引感兴趣的对象。
示例如下:
Treatment <- c('Drug A','Drug B','Drug C','Drug D','Drug E','Drug F')
Measurment_V1 <- runif(6, 0, 3000)
Measurment_V2 <- runif(6, 0, 20)
Measurment_V3 <- runif(6, 0, 1)
Measurment_V4 <- runif(6, 0, 120000)
Measurment_V5 <- runif(6, 0, 100)
df<- as.data.frame(cbind(Treatment,Measurment_V1,Measurment_V2,Measurment_V3,Measurment_V4,Measurment_V5))
每种药物都由 V1-V5 测量值解释(实际上有数百列) 那么如何获得所有药物 ABCD 之间的相关矩阵,然后像 Hmisc 库那样在热图上绘制它们的相关性呢?
解决方案
这可能会做到:
# Redo your data frame
df <- data.frame(Treatment,Measurment_V1,Measurment_V2,Measurment_V3,Measurment_V4,Measurment_V5)
# Transpose numeric columns
dft <- as.data.frame(t(df[,2:6]))
# Rename vars
names(dft) <- c("Drug_A","Drug_B","Drug_C","Drug_D","Drug_E","Drug_F")
# Correlation matrix
cor(dft)
Output:
Drug_A Drug_B Drug_C Drug_D Drug_E Drug_F
Drug_A 1.0000000 0.9995697 0.9999240 0.9999939 0.9998902 0.9999665
Drug_B 0.9995697 1.0000000 0.9998554 0.9994612 0.9998946 0.9997758
Drug_C 0.9999240 0.9998554 1.0000000 0.9998748 0.9999969 0.9999911
Drug_D 0.9999939 0.9994612 0.9998748 1.0000000 0.9998324 0.9999320
Drug_E 0.9998902 0.9998946 0.9999969 0.9998324 1.0000000 0.9999777
Drug_F 0.9999665 0.9997758 0.9999911 0.9999320 0.9999777 1.0000000
然后,您可以使用上述相关矩阵来绘制热图。
请注意,我曾经data.frame()
重做您的数据框,因为它会生成数字列。
推荐阅读
- ruby-on-rails - 访问已处理的 ActiveStorage::Variant 的原始字节
- javascript - 如何从嵌套对象中获取属性值
- javascript - 尝试使用加法赋值运算符(JavaScript)增加随机数
- spring - 如何配置 Spring Boot 2 在两个端口(HTTP 和 HTTPS)上运行 Tomcat?
- django - 在 ChoiceField 中显示特定对象字段
- provisioning-profile - 跨机器自动同步配置文件和证书
- sharepoint - 如何在 SharePoint Online 中创建超过 255 个字符的动态超链接
- go - 在 localhost:8080 上运行的服务器从 9090 上运行的前端获取 CORS
- sql-server - SQL Count Distinct 与多个条件,返回所有列,所有记录
- ruby-on-rails-5.2 - Rails 5.2 中的“before_action :only”和“before_action :except”有什么区别?