R 对data.table的每一列运行分析
我有一个非常大的数据表,其中包含一个响应变量,它可以是零(失败)或1成功。在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=
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])