1

私はこのような状況にあります:
df

List      Count 
R472        1   
R472        1   
R472        2 
R472        2       
R845        1   
R845        2   
R845        2
....       ...

次の出力が欲しいです:

df

List           freq_of_number1   freq_of_number2 
R472                  2                 2   
R845                  1                 2
....

何か考えはありますか?Thnks。

4

3 に答える 3

4

これは の仕事です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の答えを見たところです。それを受け入れてください。

于 2012-10-23T19:17:31.943 に答える
3

機能tableが動作しませんか?

> with(DF, table(List, Count))
      Count
List   1 2
  R472 2 2
  R845 1 2

更新: Brandon のコメントによると、使用したくない場合でも、これは機能しますwith

> table(DF$List, DF$Count)
于 2012-10-23T19:28:06.997 に答える
2

もっと効率的な方法があると思いますが、ここに1つのアイデアがあります

DF <- read.table(text='List      Count 
R472        1   
R472        1   
R472        2 
R472        2       
R845        1   
R845        2   
R845        2', header=TRUE)



Freq <- lapply(split(DF, DF$Count), function(x) aggregate(.~ List, data=x, table ))
counts <- do.call(cbind, Freq)[, -3]
colnames(counts) <- c('List', 'freq_of_number1', 'freq_of_number2')
counts
List freq_of_number1 freq_of_number2
1 R472               2               2
2 R845               1               2
于 2012-10-23T19:18:06.853 に答える