【问题标题】:Redefining and merging two tables in R or SAS在 R 或 SAS 中重新定义和合并两个表
【发布时间】:2011-09-22 13:46:16
【问题描述】:

我有两个相同维度的表(矩阵),一个包含相关系数,另一个包含 p 值。我想将它们组合成一张桌子。例如,假设我在表 1 中的变量 A1 和 A2 之间的相关系数为 0.75,在表 2 中的 p 值为 0.045。现在在我的组合表 3 中,我想使用:

表 1 的条件 1:如果表 1 的单元格中的系数值小于 0.4 则 "+", 0.4

表 2 的条件 2:如果表 2 的单元格中的 pvalue 小于 0.01,则为“+++”,0.01

因此,表 3 中 A1 和 A2 对应的单元格值应如下所示: +++/++ 其中“+++”对应于表 1 的值 0.75,++ 对应于表 2 的 p 值 0.045 和“ /" 只是一个分隔符。

我想这样做是 SAS 或 R

【问题讨论】:

    标签: r merge sas


    【解决方案1】:

    这里有一个 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 2020-10-16
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多