生の行入力形式 UID=character、Win/Lose=Boolean でクリックストリーム ログファイルの要約を実行しています。作成する出力サマリーは、行 UID、sumWin、sumLose の形式です。必要なものの一部を取得するためにテーブルを使用しましたが、要約 df で使用するためにテーブルの結果から因子ラベルを抽出するための正しい構文を理解するのに苦労しています。以下の例は、小さなテスト ケースを構築し、行き詰まった場所を示しています。表の結果から因子ラベルを取得できません。(もちろん、全体を処理するためのもっと良い方法があると思います - それは明らかに非常に便利です!)
ここのエディターでの書式設定にまだ問題があります-明らかに、それは次に尋ねる必要がある質問です...!
foo <- data.frame(Uid=character(4), Win=logical(4), stringsAsFactors=FALSE)
foo$Uid <- c("UidA", "UidB", "UidA", "UidC")
foo$Win <- c(FALSE, TRUE, TRUE, FALSE)
#display foo
foo
Uid Win
1 UidA FALSE
2 UidB TRUE
3 UidA TRUE
4 UidC FALSE
# my desired summary df is, for each UID: NWin (foo$Win=TRUE), NRunUp (foo$Win=FALSE)
# here I initialise a holder for it
fooNUniques <- length(unique(foo$Uid))
fooSummary <- data.frame(Uids=character(fooNUniques),NWins=numeric(fooNUniques),NRunUps=numeric(fooNUniques))
fooSummary
Uids NWins NRunUps
1 0 0
2 0 0
3 0 0
#I can reference in to the result of applying table to get part of what I want
#First I get the table, this gets me a table by win/lose value
fooTable <- table(foo$Uid, foo$Win)
fooTable
FALSE TRUE
UidA 1 1
UidB 0 1
UidC 1 0
# I can get at the actual results via unname which gives me a matrix
fooTableAsMat <- unname(fooTable)
fooTableAsMat
[,1] [,2]
[1,] 1 1
[2,] 0 1
[3,] 1 0
#but the UID vec is hidden in the table structure *somewhere* and
# I can't work out how to reference it out
#coercing the result to a dataFrame doesn't work
as.data.frame(fooTable)
Var1 Var2 Freq
1 UidA FALSE 1
2 UidB FALSE 0
3 UidC FALSE 1
4 UidA TRUE 1
5 UidB TRUE 1
6 UidC TRUE 0
#I have also tried 'aggregate' but have not made friends with it