En général, je veux obtenir le quintile supérieur d'une trame de données de la distribution d'une colonne. Cependant, il doit être le quintile supérieur pour chaque valeur catégorielle unique d'une autre colonne.Les quintiles supérieurs pour plusieurs valeurs catégorielles
Je suppose que cela doit être fait en plusieurs étapes, potentiellement avec une boucle. Au début, je dois séparer les trames de données en fonction des valeurs catégorielles uniques, puis ne conserver que les quintiles supérieurs de chaque nouvelle trame de données, puis relier les trames de données ensemble. Mais je n'ai aucune idée de comment faire cela.
Certaines données de l'échantillon:
dat <- data.frame(x = rep(letters[1:3],times = 5),
y = rep(1:3,each = 5))
> dat
x y
1 a 1
2 b 1
3 c 1
4 a 1
5 b 1
6 c 2
7 a 2
8 b 2
9 c 2
10 a 2
11 b 3
12 c 3
13 a 3
14 b 3
15 c 3
À l'étape 1 Je veux créer une trame de données pour chaque valeur catégorique unique. Quelque chose comme:
> df.a
x y
1 a 1
2 a 1
3 a 2
4 a 2
5 a 3
DF.B et df.c en conséquence
Dans la deuxième étape, je veux seulement garder le quintile supérieur de chaque nouvelle trame de données. Quelque chose comme:
deviendrais ceci:
> df.a=df.a[df.a$y > quantile(df.a, 0.5, na.rm = TRUE),]
# taking the top 50% because the top quintile would not work with the sample data.
Dans la dernière étape, je dois rbind toutes les nouvelles trames de données.