今天放了个屁,我希望这是我错过的一个明显的解决办法。我有两个数据,一个是端点的数据,另一个是风险因素的数据。我将计算所有风险因素与所有可能结果的组合的所有风险比率。我需要一个函数,它将从这两个数据格式生成所有可能的应急表。这将是很好的有名气的工作,允许我输入一些统计函数作为应急表功能的一部分。
示例数据:
a = c(1,0,1,1,1)
b = c(0,1,1,0,0)
c = c(1,1,0,0,1)
d = c(0,0,0,1,1)
risk = data.frame(a,b)
endpoint = data.frame(c,d)同样,如果您可以将其作为一个循环,允许我在创建应急表时计算统计数据,我将对此表示感谢。它将允许我将现有代码复制/粘贴到函数中。
谢谢
发布于 2017-11-27 21:54:34
还不完全清楚您要创建什么“应急表”,但下面给出了table输出,用于risk和endpoint的所有组合
lapply(data.frame(t(expand.grid(names(risk), names(endpoint),
stringsAsFactors = FALSE)), stringsAsFactors = FALSE),
function(x) table(risk[[x[1]]], endpoint[[x[2]]], dnn = x))请注意,有两个stringsAsFactors=FALSE,一个用于expand.grid,另一个用于data.frame,因为这两个函数都隐式地将字符转换为因子,这对于table来说是不可取的。为了简化上面的代码,您可以使用tidyverse等效:
map(as.tibble(t(expand.grid(names(risk), names(endpoint),
stringsAsFactors = FALSE))),
~ table(risk[[.[1]]], endpoint[[.[2]]], dnn = .))结果:
$X1
c
a 0 1
0 0 1
1 2 2
$X2
c
b 0 1
0 1 2
1 1 1
$X3
d
a 0 1
0 1 0
1 2 2
$X4
d
b 0 1
0 1 2
1 2 0https://stackoverflow.com/questions/47520214
复制相似问题