0

私はこの形式のテーブルを持っています:

テーブルの断片

たとえば、c2==1、(c2 および c3)== 1、(c2 および c4)==1、(c1 および c2 およびc3)==1 など... 最終的に、各ケースの Counts 値を持つリストが得られます。

c2 == 1 を持つ列のリストの例: C2<-c(4, 42, 12, ...)

私はこの方法で試してみました:

誰でもこの問題を解決する方法を提案できますか?

テーブルが関数 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 に答える