これは の仕事ですaggregate
:
d <- read.table(text="List Count
R472 1
R472 1
R472 2
R472 2
R845 1
R845 2
R845 2", header=TRUE)
aggregate(Count ~ List, data=d, FUN=table)
# List Count.1 Count.2
# 1 R472 2 2
# 2 R845 1 2
編集:
上記のコードは、あなたが提供したケースで機能し、回答を受け入れたので、より大きなケースでも機能すると思いますが、 のエントリにList
の数字のいずれかが欠落している場合、この単純な回答は失敗しCount
ます。より一般的な場合:
DF <- read.table(text="List Count
R472 1
R472 1
R472 2
R472 2
R845 1
R845 2
R845 2
R999 2", header=TRUE)
f <- function(x) {
absent <- setdiff(unique(DF$Count), x)
ab.count <- NULL
if (length(absent) > 0) {
ab.count <- rep(0, length(absent))
names(ab.count) <- absent
}
result <- c(table(x), ab.count)
result[order(names(result))]
}
aggregate(Count ~ List, data=d, FUN=f)
# List Count.1 Count.2
# 1 R472 2 2
# 2 R845 1 2
# 3 R999 0 1
編集2:
@JasonMorganの答えを見たところです。それを受け入れてください。