首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个dataframes r生成所有可能的应急表

从两个dataframes r生成所有可能的应急表
EN

Stack Overflow用户
提问于 2017-11-27 21:37:02
回答 1查看 395关注 0票数 0

今天放了个屁,我希望这是我错过的一个明显的解决办法。我有两个数据,一个是端点的数据,另一个是风险因素的数据。我将计算所有风险因素与所有可能结果的组合的所有风险比率。我需要一个函数,它将从这两个数据格式生成所有可能的应急表。这将是很好的有名气的工作,允许我输入一些统计函数作为应急表功能的一部分。

示例数据:

代码语言:javascript
复制
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)

同样,如果您可以将其作为一个循环,允许我在创建应急表时计算统计数据,我将对此表示感谢。它将允许我将现有代码复制/粘贴到函数中。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-27 21:54:34

还不完全清楚您要创建什么“应急表”,但下面给出了table输出,用于riskendpoint的所有组合

代码语言:javascript
复制
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等效:

代码语言:javascript
复制
map(as.tibble(t(expand.grid(names(risk), names(endpoint), 
                            stringsAsFactors = FALSE))), 
    ~ table(risk[[.[1]]], endpoint[[.[2]]], dnn = .))

结果:

代码语言:javascript
复制
$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 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47520214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档