R 对data.table的每一列运行分析

R 对data.table的每一列运行分析,r,data.table,R,Data.table,我有一个非常大的数据表,其中包含一个响应变量,它可以是零(失败)或1成功。在data.table中,有很多列,每一列代表一个响应率可能变化的因素。我想对每一列数据进行相同的分析,这将产生不同的结果,例如该列的响应率表、柱状图等等 我想制作的表格示例如下所示: data.dt <- data.table(response=round(runif(100,0,1),0), factor1 = sample(LETTERS,100, replace=

我有一个非常大的数据表,其中包含一个响应变量,它可以是零(失败)或1成功。在data.table中,有很多列,每一列代表一个响应率可能变化的因素。我想对每一列数据进行相同的分析,这将产生不同的结果,例如该列的响应率表、柱状图等等

我想制作的表格示例如下所示:

data.dt <- data.table(response=round(runif(100,0,1),0), 
                      factor1 = sample(LETTERS,100, replace=TRUE),
                      factor2 = sample(letters,100, replace=TRUE)
                     )
setkey(data.dt, factor1)
table.dt <- data.dt[,list(patients=.N,
                          successes=sum(response)
                         ), 
                     by=list(factor1)
                    ]
table.dt[,successesRate  := round(successes/patients,2)] 
table.dt

data.dt我会先融化数据:

library(reshape2)

data.dt.melt <- melt(data.dt, id.vars="response",
    variable.name="table", value.name="factor")

table.dt <- data.dt.melt[,list(patients=.N, 
    successes=sum(response)), 
    by=list(table, factor)]

      table factor patients successes
 1: factor1      A        4         3
 2: factor1      B        3         0
 3: factor1      C        3         2
 4: factor1      D        2         1
 5: factor1      E        7         3
 6: factor1      F        4         1
 ...
47: factor2      x        2         0
48: factor2      i        3         0
49: factor2      t        2         1
50: factor2      e        4         1
51: factor2      a        2         1
52: factor2      k        3         2
library(重塑2)

data.dt.melt只是想说声谢谢。我没有足够的声望去投票。你的方法肯定比may eval(parse(paste)方法要好!不过我本来希望完全使用data.table范例,因为数据量很大。而且我也不知道如何以这种方式在数据上创建ggplot对象列表(例如)。@Alanchall没问题。你说的“data.table范例”是什么意思?
table.dt
将是一个data.table,而
table.list
将是一个data.tables列表(与您要求的完全相同),因此我不确定您希望与data.tables一起使用多少paragram-y。tables:p
table.list <- list(factor1=table.dt[table=="factor1"],!"table",with=F],
    factor2=table.dt[table=="factor2"][,!"table",with=F])