仅提取R中表的某些行

时间:2012-04-17 07:43:08

标签: r

我有一个这种格式的表:

fragment of  table

我正在尝试编写一个将从表中“提取”的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]],如果我使用表$ c1 == 1它也不起作用。

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

我忘了提到该表来自该功能: vennCounts()

1 个答案:

答案 0 :(得分: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)
}
相关问题