Die Daten sind wie folgt definieren:pro Kategorie ermitteln und Klassennamen entsprechend
temp <- data.frame(type = c("a","b","c","d"), value=runif(100, 10, 2380))
temp <- as.data.table(temp)
# type value
# 1: a 2250.33013
# 2: b 1271.71251
# 3: c 2299.45486
# 4: d 807.30089
# 5: a 31.32157
Ich mag würde Quartil pro Typ berechnen, dann wird die Klasse als class1,2,3,4 pro Division definieren.
Mein Ziel ist es, Klassenwert gleichmäßig auf verschiedene Typen zu verteilen.
Mein erster schneller Ansatz war wie diese,
a <- temp[type == "a"]
b <- temp[type == "b"]
c <- temp[type == "c"]
d <- temp[type == "d"]
quantile(a$value)
quantile(b$value)
quantile(c$value)
quantile(d$value)
dt <- temp[, quantile := quantile(value), by = type]
Und dann dt$class <- ifelse(...)
erstellen Aber das scheint wie ein Umweg Weg, um dieses Problem zu lösen. Ich habe das Gefühl, ich könnte hier Techniken anwenden, aber ich konnte noch nicht verwandte Themen finden.
Mein ideales Ergebnis sollte wie folgt (ignorieren Sie die Zahlen für diese)
# type value quantile class
# 1: a 2250.33013 31.32157 class1
# 2: b 1271.71251 112.83298 class2
# 3: c 2299.45486 33.67312 class3
# 4: d 807.30089 40.06302 class4
# 5: a 31.32157 535.78510 class1
# 6: b 815.11432 808.63388 class2
# 7: c 1341.02811 1128.15997 class3
# 8: d 964.20982 650.42241 class4
# 9: a 2208.44555 1290.29102 class1
# 10: b 1167.64278 1369.88565 class2
# 11: c 349.35402 1526.66226 class3
# 12: d 643.73551 1073.49396 class4
So dass letztlich sein, würde ich über die Art gleichmäßig verteilt Klassen haben. Bitte teilen Sie mir Ihre Idee, dies auf intelligentere Weise zu tun. Vielen Dank!