如何基于R

时间:2019-05-27 11:58:01

标签: r datatable

我有2张桌子:一张用于我的研究人群,一张用于我的原始人群。它们基于具有相同变量的2个DF:患者ID,中心,治疗开始的年份。他们每个人给我每个中心和每年的病人数

tb1 = table(ART_source$PROGRAM, ART_source$ART_Y)

tb2 = table(ART_study$PROGRAM, ART_study$ART_Y)

我需要第三张表,该表显示了研究人群中患者的比例(基于来源人群)。所以像这样: t3 =表格(t2 / t1) 除了那当然是行不通的。 我可以在excel上手动完成此操作,但我认为在R中必须有一种更聪明的方法。非常感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

经过编辑以反映不应划分的列:

library(dplyr)

df1 <- data.frame(id = c("patient1", "patient2", "patient3", "patient4", "patient5"), replicate(5,sample(1:50,5,rep=TRUE)))
df2 <- data.frame(id = c("patient1", "patient2", "patient3", "patient4", "patient5"), replicate(5,sample(1:50,5,rep=TRUE)))

df3 <- data.frame(df1$id, df1[, c(2:6)] / df2[, c(2:6)])

> df1
        id X1 X2 X3 X4 X5
1 patient1 15 18  5 49 47
2 patient2 13 32 13 33 21
3 patient3 20 42 32  5 25
4 patient4 32  8 26 32 18
5 patient5 48 49 13 44 13
> df2
        id X1 X2 X3 X4 X5
1 patient1 48 12  6 21 25
2 patient2 18 43  1 14 13
3 patient3 10 18 37 25 13
4 patient4 37  4 47  3 28
5 patient5  9  2 50  1 13
> df3
    df1.id        X1        X2         X3        X4        X5
1 patient1 0.3125000  1.500000  0.8333333  2.333333 1.8800000
2 patient2 0.7222222  0.744186 13.0000000  2.357143 1.6153846
3 patient3 2.0000000  2.333333  0.8648649  0.200000 1.9230769
4 patient4 0.8648649  2.000000  0.5531915 10.666667 0.6428571
5 patient5 5.3333333 24.500000  0.2600000 44.000000 1.0000000