Chcę podzbiorować ramkę danych według współczynnika. Chcę zachować poziomy czynników powyżej określonej częstotliwości.Elegancki sposób obniżania poziomów rzadkich czynników z ramki danych
df <- data.frame(factor = c(rep("a",5),rep("b",5),rep("c",2)), variable = rnorm(12))
Kod ten tworzy ramkę danych:
factor variable
1 a -1.55902013
2 a 0.22355431
3 a -1.52195456
4 a -0.32842689
5 a 0.85650212
6 b 0.00962240
7 b -0.06621508
8 b -1.41347823
9 b 0.08969098
10 b 1.31565582
11 c -1.26141417
12 c -0.33364069
I chcę spadać poziom czynnika, który powtarzające się mniej niż 5 razy. I stworzył pętli for-a to działa:
for (i in 1:length(levels(df$factor))){
if(table(df$factor)[i] < 5){
df.new <- df[df$factor != names(table(df$factor))[i],]
}
}
Ale czy szybsze i ładniejsze rozwiązania istnieje?
prawdopodobnie chcesz semi dołącz – hadley