Einrichtung I 1,000,000
Beobachtungen aus dem folgende normalen Mischungsmodell und Ist die Beobachtungen, so dass jedes der 10,000
sind hat eine gleiche Anzahl von Beobachtungen Probe (d.h. 100
). Dies erzeugt einen Faktor für jeden Behälter in der Form (a,b]
, wobei a
und b
Nummern sind.Erhalten Endpunkte von Intervall, die variable Faktor
#Random sample
set.seed(1234)
X = ks::rnorm.mixt(n=1000000,mus=c(0.2,0.8),sigmas=c(0.04,0.01),props=c(0.95,0.05))
#Bins based on random sample with ~100 observations in each bins
bins = ggplot2::cut_number(X,10000)
dat = data.frame(X,bins)
Frage Ich möchte die Zahlen (a,b]
a
und b
vom Faktor extrahieren. Hier ist, was die Behälter wie folgt aussehen:
> head(table(bins))
bins
[0.00501617,0.0518875] (0.0518875,0.0594831] (0.0594831,0.0640679]
100 100 100
(0.0640679,0.0670062] (0.0670062,0.0694194] (0.0694194,0.0717924]
100 100 100
> tail(table(bins),20)
bins
(0.817766,0.818032] (0.818032,0.8183] (0.8183,0.818544] (0.818544,0.818879]
100 100 100 100
(0.818879,0.819112] (0.819112,0.819394] (0.819394,0.819664] (0.819664,0.819979]
100 100 100 100
(0.819979,0.820328] (0.820328,0.820727] (0.820727,0.821118] (0.821118,0.82158]
100 100 100 100
(0.82158,0.822109] (0.822109,0.822646] (0.822646,0.823253] (0.823253,0.82408]
100 100 100 100
(0.82408,0.825026] (0.825026,0.826417] (0.826417,0.828651] (0.828651,0.84424]
100 100 100 100
Wie Sie sehen können, die Zahlen in den Faktoren nicht immer die gleiche Anzahl von Ziffern haben, und sie können von 0'en (z (0.0518875,0.0594831]
) vorangestellt werden.
I
endpts=na.omit(as.numeric(unlist(strsplit(as.character(unlist(bins)),"[^0-9]+"))))
Für die oben ist ((0.0518875,0.0594831]
) nur mit dem numerischen Teil zu extrahieren zunächst versucht, würde dieses Verfahren Ausgabe 518875 594831
, sondern weil die nachgestellten Nullen weg sind, könnte es zu mehrere abgebildet wird Werte (zB 0.518875 0.594831
). Außerdem gibt es Fächer, in denen eine oder beide Nummern eine unterschiedliche Anzahl von Ziffern haben (z. B. (0.818032,0.8183]
). Dieser Mangel an Einheitlichkeit in der Ausgabe gibt mir Probleme, wenn ich versuche, die Endpunkte zu bekommen. Letztendlich möchte ich die linken und rechten Endpunkte bekommen. Irgendwelche Vorschläge?
BEARBEITEN Ich schaute auch in den Code für ggplot2::cut_number
, die die Funktion verwendet. Die Standardeingabe in für die Anzahl der Ziffern ist dig.lab=3
, aber dies scheint sich nicht in der obigen Ausgabe widerzuspiegeln.
Ihr Code hätte eine bessere Chance auf Erfolg, wenn Sie die Dezimalpunkte beibehalten. –