0

我有一个这种格式的表格:

表的片段

我正在尝试编写一个 R 脚本,该脚本将从表中“提取”例如具有 c2==1、(c2 和 c3)== 1、(c2 和 c4)==1、(c1 和 c2 和c3)==1,依此类推...这样最后我将有一个列表,其中包含每个案例的 Counts 值。

具有 c2 == 1 的列的示例列表: C2<-c(4, 42, 12, ...)

我尝试过这种方式:totalC2<-table[table[c1]],如果我使用 table$c1 == 1 它也不起作用。

谁能给我一个如何解决这个问题的建议?

我忘了提到该表来自函数:vennCounts()

4

1 回答 1

1

在输出中,您将命名为具有相应计数的列表。但也许使用更清晰和直接的解决方案可以获得相同的结果。让我们拭目以待其他答案。

# data simulation
c1 <- sample(c(0,1), 10, replace=T)
c2 <- sample(c(0,1), 10, replace=T)
c3 <- sample(c(0,1), 10, replace=T)
c4 <- sample(c(0,1), 10, replace=T)
Counts <- sample(1:100, 10)
df <- data.frame(c1, c2,c3, c4, Counts)

f <- function(y) {
  idx <- apply(df[,y, drop=F], 1, function(x) all(x == 1))
  df[idx, "Counts"]
}

out <- list()
l <- sapply(1:4, function(x) {combn(x=c("c1", "c2", "c3", "c4"), m=x, simplify=F)})
l <- unlist(l, recursive=F)
for (x in l) {
  out[[paste(x, collapse="")]] <- f(x)
}
于 2012-04-17T08:34:29.397 回答