2016-11-10 3 views
-1

ユーザーID、週番号、ユーザーが何かをしたという事実(Processed、0または1)と使用している列をリストしたdata.tableがありますhowManyが呼ばれ、私が持っているどのように多くの値をカウントする:2つの関数を適用してdata.tableを集計する方法

data <- data.table(WeekNumber=c(33,33,33,34,34,33,33,34,34), 
     User=c(1,1,1,1,1,2,2,2,2), 
     Processed=c(1,1,0,0,1,0,1,0,1), 
     HowMany=c(1,1,1,1,1,1,1,1,1)) 

私は毎週のために、物事の合計が行われていない行って、見つけたいので、私はこのような何か:

> dcast(setDT(data), WeekNumber~Processed, value.var="HowMany", sum) 
    WeekNumber 0 1 
1:   33 2 3 
2:   34 2 2 

をさて、私は、週の終わりまでに行われたことの平均数を知りたいのですが、この場合、私はユーザーbefoによってもやや集計する必要があります再、私はこの段階で失敗:私の最適な結果は以下のようになりながら

> dcast(setDT(data), WeekNumber~Processed+User, value.var="HowMany", mean) 
    WeekNumber 0_1 0_2 1_1 1_2 
1:  33 1 1 1 1 
2:  34 1 1 1 1 

このような何かについてどう
WeekNumber 0 1 
     33 1 1.5 
     34 1 1 
+2

[OK]を、ご希望の出力は単に 'データ[、テーブル(WeekNumber、加工)/ uniqueN(WeekNumber)]' – Frank

+0

@Frankのおかげのように、あなたは答えとしてこれを書いしようとしている、table' 'から来ています私はそれを受け入れることができますか? – user299791

+2

http://stackoverflow.com/q/25293045/ – Frank

答えて

2

dat[, user_processed := paste(User, Processed, sep="_")] 
dcast(dat, WeekNumber~user_processed, value.var="Processed", length) 

あなたを与える:

WeekNumber 10001041_1 10001042_0 10001042_1 
1:   33   0   3   2 
2:   43   5   0   0 

サンプルデータ使用:

dat <- fread("User Processed WeekNumber 
    1: 10001042   0   33 
     2: 10001042   0   33 
     3: 10001042   1   33 
     4: 10001042   0   33 
     5: 10001042   1   33 
     870: 10001041   1   43 
     871: 10001041   1   43 
     872: 10001041   1   43 
     873: 10001041   1   43 
     874: 10001041   1   43") 

dat <- dat[, V1 := NULL] 
setnames(dat, c("User", "Processed", "WeekNumber")) 
+0

申し訳ありませんが、質問で要求された平均をどこで計算していますか? – user299791

+1

@ user299791あなたの質問は曖昧です。 SOの他の場所と同じように、Rタグでは、再現可能な最小限の例を対応する出力でポストすることが期待されます。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/28481250 – Frank

+0

@ user299791 'length'ではなく' mean'を使うことができますが、基本的にはすべてがそこにあると思います期待されるアウトプットを生み出すために...フランクとして私はあなたが何を期待しているか100%確信していません。 – Rentrop

関連する問題