0

次のようなデータセットがあります

| ID | Category | Failure |
|----+----------+---------|
|  1 | a        | 0       |
|  1 | b        | 0       |
|  1 | b        | 0       |
|  1 | a        | 0       |
|  1 | c        | 0       |
|  1 | d        | 0       |
|  1 | c        | 0       |
|  1 | failure  | 1       |
|  2 | c        | 0       |
|  2 | d        | 0       |
|  2 | d        | 0       |
|  2 | b        | 0       |

これは、イベントの中間シーケンスを通じて、各 ID が失敗イベントで終了する可能性があるデータ{a, b, c, d}です。それらの中間イベントのそれぞれが発生する ID の数を障害イベントごとにカウントできるようにしたいと考えています。

だから、私はフォームのテーブルが欲しい

|            | a | b | c | d |
|------------+---+---+---+---|
| Failure    | 4 | 5 | 6 | 2 |
| No failure | 9 | 8 | 6 | 9 |

ここで、たとえば、番号 4 は、a発生した 4 つの ID が失敗に終わったことを示します。

Rでこれを行うにはどうすればよいですか?

4

1 に答える 1

1

tableたとえば、次のように使用できます。

dat <- data.frame(categ=sample(letters[1:4],20,rep=T),
                  failure=sample(c(0,1),20,rep=T))

res <- table(dat$failure,dat$categ)
rownames(res) <- c('Failure','No failure')
res
           a b c d
Failure    3 2 2 1
No failure 1 2 4 5

あなたはそれを使用してそれをプロットすることができますbarplot

barplot(res)

ここに画像の説明を入力してください

これをIDで取得するには、次のように編集byします。

  dat <- data.frame(ID=c(rep(1,9),rep(2,11)),categ=sample(letters[1:4],20,rep=T),
               failure=sample(c(0,1),20,rep=T))
 by(dat,dat$ID,function(x)table(x$failure,x$categ))
dat$ID: 1

    a b c d
  0 1 2 1 3
  1 1 1 0 0
--------------------------------------------------------------------------------------- 
dat$ID: 2

    a b c d
  0 1 2 3 0
  1 1 3 1 0

Tapplyを使用して編集

これを取得する別の方法は、tapply

  with(dat,tapply(categ,list(failure,categ,ID),length))
于 2013-03-15T06:49:51.920 に答える