在R或SAS中重新定义和合并两个表

时间:2011-09-22 13:46:17

标签: r merge sas

我有两个相同维度的表(矩阵),一个包含相关系数,另一个包含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

1 个答案:

答案 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))