1

次のデータフレーム「myData」があります

  NAME GAME    STATUS
1 aaa  poker   PASSED
2 bbb  poker   FAILED
3 aaa  tennis  PASSED
4 bbb  tennis  PASSED

次の出力が欲しい

  NAME  FAILED PASSED TOTAL
1 aaa     0      2      2
2 bbb     1      1      2

次のコードを試しました

myResult <- as.data.frame(table(myData[,c("NAME","STATUS")]))

上記のコードは私に与えます

  NAME  STATUS   Freq
1 aaa   FAILED   0
2 aaa   PASSED   2
3 bbb   FAILED   1
4 bbb   PASSED   1

この時点で、「myResult」を回転させて必要な形式にする方法がわかりません。何か案は?

4

2 に答える 2

2

基本的な R 関数を使用したソリューションを次に示します。

myResult <- as.data.frame(unclass(xtabs( ~ NAME + STATUS, myData)))
myResult$TOTAL <- rowSums(myResult)


    FAILED PASSED TOTAL
aaa      0      2     2
bbb      1      1     2
于 2012-11-21T20:02:34.293 に答える
1

このような場合、 reshape2パッケージdcastからよく使用します。

dat <- read.table(text = "  NAME GAME    STATUS
1 aaa  poker   PASSED
2 bbb  poker   FAILED
3 aaa  tennis  PASSED
4 bbb  tennis  PASSED",header = TRUE,sep = "",row.names = 1)

library(reshape2)
dcast(dat,NAME~STATUS,
        fun.aggregate = length,
        value.var = "STATUS",
        margins = "STATUS")
于 2012-11-21T19:42:13.947 に答える