。という名前の関数を使用して、同等のgroup by
要約を実行しようとしています。3つの列(たとえば、、 )を持つデータフレームがあります。次に、それぞれがデータフレーム(と)に表示される回数をカウントし、列に対応するそれぞれの最後の要素を取得したいと思います。R
plyr
ddply
id
period
event
id
count(*)... group by id
SQL
id
event
これが私が持っているものと私が取得しようとしているものの例です:
id period event #original data frame
1 1 1
2 1 0
2 2 1
3 1 1
4 1 1
4 1 0
id t x #what I want to obtain
1 1 1
2 2 1
3 1 1
4 2 0
これは私がそのために使用している単純なコードです:
teachers.pp<-read.table("http://www.ats.ucla.edu/stat/examples/alda/teachers_pp.csv", sep=",", header=T) # whole data frame
datos=ddply(teachers.pp,.(id),function(x) c(t=length(x$id), x=x[length(x$id),3])) #This is working fine.
今、私はデータ分析のための分割-適用-結合戦略を読んでいて、それらが私が以下に置いたものと同等の構文を採用した例が与えられています:
datos2=ddply(teachers.pp,.(id), summarise, t=length(id), x=teachers.pp[length(id),3]) #using summarise but the result is not what I want.
これは私が使用しているデータフレームですdatos2
id t x
1 1 1
2 2 0
3 1 1
4 1 1
だから、私の質問は、なぜこの結果が最初のコードを使用して得られる結果と異なるのかということdatos1
です。私は何が間違っているのですか?
summarise
いつ使用する必要があるのかわかりませんtransform
。ddply
関数の正しい構文を教えてください。