特定の列の値も考慮に入れた最小サンプルサイズのビンを作成する方法を理解しようとしています。最小サンプルサイズのロー値によるデータのバインド
したがって、以下のダミーデータでは、最小サンプル数6のビンを作成したいと思いますが、ビンに特定の値の列が含まれている場合は、同じ値を持つ他のすべての行。私はまた、どのビンにもa行の1つのユニークな値しか入れないことを望んでいます。次に、出力に列aの一意の値の平均、列bのすべての値の平均、およびサンプルサイズの列を持つ行を出力します。
私は、出力は次のようになりたいdf<-data.frame(a=c(1,1,2,2,2,3,3,3,3,4,4,5,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,9,10,10,10),
b=c(12,13,11,12,12,11,15,13,12,11,14,15,11,14,12,11,14,12,13,15,11,11,12,13,14,16,14,13,15,13,15))
:
mean.a mean.b n
1 2.0 12.33333 9
2 5.0 12.83333 6
3 7.0 12.66667 6
4 8.5 13.28571 7
これは私がこれまで持っているものです。
x<-df
final<-NULL
for(i in 1:16){
x1<-x[1:6,]
x2<-x[-c(1:6),]
x3<-rbind(x1, x2[x2$a==x1$a[6],])
n<-nrow(x3)
y<-mean(x3$b)
z<-mean(unique(x3$a))
f<-data.frame(mean.a=z, mean.b=y, n=n)
final<-rbind(final,f)
x<-x[-c(1:n),]
}
final<-final[complete.cases(final),]
私がいる問題は、私はできないです列aに1つの固有の値を持つ単一のビンを持たない方法を見つけます。たとえば、3番目のビンでは、6つの行にmean.a $ a = 7がありますが、次のシーケンシャルな行とその行の値を持つすべての行をそのビンに列aを追加したいと思います。この場合mean.a $ a = 8)。
また、1:数字を一番上に置かずにループを続ける方法を見つけられず、後でNAで行を削除するだけでは大したことではありませんが、それは一種の乱雑な理由です。
私はこのループには何も付いていません。この質問に答える簡単な方法があれば、私はそれだけです!
は、この加工さをありがとう:私たちは1で
id
を増やし、結果は要約統計量は、このグループの変数に基づいて計算することができ、そこから、あなたはdata.table
からrleid
関数から得られるものと同様であろう条件すばらしいです! – tnl393