我们从以下形式的数据帧开始:
my_df <- structure(
list(
a = c(1, 1, 1, 2, 2, 2, 3, 3),
b = c('M1', 'M2', 'M3', 'M1', 'M2', 'M3', 'M1', 'M3'),
c = c(0, 0, 0, 1, 1, 0, 1, 1)
),
.Names = c("ID", "METHOD", "RESULT"),
row.names = c(NA, 8L),
class = "data.frame"
)
在这个简化的例子中,我们有三种方法(M1,M2,M3),三个个体(1,2,3,对于3,只有M1和M3的结果可用),以及两个可能的测试结果,0(否定的)和1(肯定的).我希望获得如下所示的输出:
M1 positive | M1 negative | M2 positive | M2 negative | M3 positive | M3 negative | |
---|---|---|---|---|---|---|
if M1 positive | 100% (XX/XX) | 0% (XX/XX) | % (XX/XX) | % (XX/XX) | % (XX/XX) | % (XX/XX) |
if M1 negative | 0% (XX/XX) | 100% (XX/XX) | % (XX/XX) | % (XX/XX) | % (XX/XX) | % (XX/XX) |
if M2 positive | % (XX/XX) | % (XX/XX) | 100% (XX/XX) | 0% (XX/XX) | % (XX/XX) | % (XX/XX) |
if M2 negative | % (XX/XX) | % (XX/XX) | 0% (XX/XX) | 100% (XX/XX) | % (XX/XX) | % (XX/XX) |
if M3 positive | % (XX/XX) | % (XX/XX) | % (XX/XX) | % (XX/XX) | 100% (XX/XX) | 0% (XX/XX) |
if M3 negative | % (XX/XX) | % (XX/XX) | % (XX/XX) | % (XX/XX) | 0% (XX/XX) | 100% (XX/XX) |
或者换句话说,我想知道一种方法的结果,比如说M1,与另一种方法的结果有多少一致.作为输出,我想得到(1)百分比(比如,如果M1为正,那么M3的22%也为正)和(2)绝对数字(例如,在1000例M1阳性中,220例M3阳性).因此,(XX/XX)代表,例如,在该特定示例中,M1的阳性数量/M3的阳性数量.
我已经采取了几种方法,试图利用If Else、If_Else和Case_When,但我正在寻找一种通用的方法,优先位于tidyVerse中的某个位置,它将提供数组--在某种程度上是交叉相关矩阵--我心里有.如能就如何汇总数据提供任何帮助,我们将不胜感激.