【发布时间】:2015-10-15 19:32:52
【问题描述】:
所以我正在处理癌症分期数据。假设有一个这种类型的数据集。它是一个数据框。
cancertype stage
TCGA-67-6215-01 1
TCGA-67-6216-01 1
TCGA-67-6217-01 2
TCGA-69-7760-01 2
TCGA-69-7761-01 1
TCGA-69-7763-01 1
TCGA-69-7764-01 1
TCGA-69-7765-01 4
TCGA-69-7980-01 1
TCGA-71-6725-01 1
TCGA-73-4658-01 1
TCGA-73-4659-01 3
TCGA-73-4662-01 1
TCGA-73-4675-01 3
所以我想要的是一个列表,其中每个元素都是一个数据框。这里有 4 个级别用于 4 个可能的癌症阶段。每个级别的 2 个级别、3 个级别等的组合都应该有数据框,直到数据中的级别数。但也是每个合并级别组合的数据框。我的意思是
list(
dataframe of stage1 and 2
dataframe of stage1 and 3
dataframe of stage 1 and 4
dataframe of stage 2 and 3
...etc
dataframe of stage 1,2 and 3
dataframe of stage 2,3 and 4
...
dataframe of stage 1,2 and 3,4
dataframe of stage 1,3 and 2,4
dataframe of stage 1,2,3 and 4
dataframe of stage 1,2,4 and 3
.. etc etc I think this should give you the idea.
)
在这里,当我说第 1、2、4 阶段时,我的意思是它们都已合并到一个级别。
我基本上是在尝试对 t 检验进行所有可能的比较,因此我正在设置进行比较所需的样本。做所有可能的组合并合并组合会很好。
到目前为止,我能够结合未合并比较的所有元素 这是 11 。即2段6连击、3段4连击、4段1连击
stage # dataframe of stage data as factors
stage_split <-split(stage,stage[,1])
allcombos<- c(combn(stage_split,2,simplify=F), combn(stage_split,3,simplify=F), combn(stage_split,4,simplify=F))
allcombos_cmbnd<- lapply(allcombos, function(x) Reduce(rbind,x))
如何从所有可能的合并排列中生成额外的数据帧,然后附加到此列表中?也许从第一个数据帧有一种优雅的方式来实现这一点。一种方法是遍历这个 11 的列表并从 3 的组合开始生成合并?我可以暴力破解它,但我希望有一种优雅的方式来执行这个可以扩大规模。到目前为止,我没有找到任何解释如何生成数据中的所有级别组合以及所有级别的合并组合。
感谢您的帮助
【问题讨论】:
-
你能给我们展示一些组合的例子吗? @user227710 的评论将,例如
expand.grid(list(1:3,1:4))
标签: r merge split combinations reduce