我有两个相同维度的表(矩阵),一个包含相关系数,另一个包含p值。我想把它们组合成一个表。例如,假设表1中变量A1和A2之间的相关系数为0.75,表2中的p值为0.045。现在在我的组合表3中,我想使用:
表1的条件1:如果表1的单元格中的系数值小于0.4则为“+”,0.4 <=系数<0.7然后“++”否则“+++”,
表2的条件2:如果表2的单元格中的p值小于0.01,则“+++”,0.01&lt; = pvalue&lt; .05然后“++”否则“+”。
因此,表3中A1和A2的相应单元格值应如下所示:+++ / ++其中“+++”对应于表1的值0.75,++对应于表2的p值0.045和“ /“只是一个分隔符。
我想这样做是SAS或 R 。
答案 0 :(得分:4)
这是R
的解决方案首先,创建一些虚拟数据以使用
corr <- matrix(runif(16),4,4)
ps <- matrix(runif(16)^5,4,4)
每个矩阵可以单独格式化。请注意,这会将它们降低到矢量。将两个格式化版本粘贴在一起后,将恢复矩阵结构。
corr.fmt <- cut(corr, c(0, 0.4, 0.7, 1), labels=c("+","++","+++"))
ps.fmt <- cut(ps, c(0, 0.01, 0.05, 1), labels=c("+++","++","+"))
res <- matrix(paste(corr.fmt, ps.fmt, sep="/"), nrow(corr), ncol(corr))
如果要将转换内联
,可以将其合并为单个语句res <- matrix(paste(cut(corr, c(0, 0.4, 0.7, 1), labels=c("+","++","+++")),
cut(ps, c(0, 0.01, 0.05, 1), labels=c("+++","++","+")),
sep="/"), nrow(corr), ncol(corr))