周波数に基づいて上位2因子レベルのみを保持し、他のすべての因子をその他にグループ化したいと思います。私はこれを試しましたが、それは助けません。カウントに基づいてデータフレーム内のすべての因子変数の縮小係数レベル
df=data.frame(a=as.factor(c(rep('D',3),rep('B',5),rep('C',2))),
b=as.factor(c(rep('A',5),rep('B',5))),
c=as.factor(c(rep('A',3),rep('B',5),rep('C',2))))
myfun=function(x){
if(is.factor(x)){
levels(x)[!levels(x) %in% names(sort(table(x),decreasing = T)[1:2])]='Others'
}
}
df=as.data.frame(lapply(df, myfun))
期待以上の関数が最初に再する必要があります。しかしこれは、ベースRを経由して一つのアプローチがあり、ここで少し厄介かもしれませんが、
a b c
D A A
D A A
D A A
B A B
B A B
B B B
B B B
B B B
others B others
others B others
データフレームまたは列全体の要因の頻度を計算しますか?あなたの期待される結果を共有してください。 –
それは、単一の変数のためだけであり、私は頻度に基づいて上位2因子を保持し、他のすべてのレベルを他のものとしてグループ化する。 –
上記のデータフレームで予想される出力を追加できますか? – thepule