R: Zjistit, které připomínky jsou umístěny v každé "bar" histogramu

0

Otázka

Já jsem pracoval s R programovací jazyk. Předpokládejme, že mám následující data:

     a = rnorm(1000,10,1)
     b = rnorm(200,3,1)
     c = rnorm(200,13,1)
    
    d = c(a,b,c)
index <- 1:1400

my_data = data.frame(index,d)

Můžu udělat následující histogramy pro stejná data nastavením "bin" délka (prostřednictvím "přestávky" možnost):

hist(my_data, breaks = 10, main = "Histogram #1, Breaks = 10")
 hist(my_data, breaks = 100, main = "Histogram #2, Breaks = 100")
 hist(my_data, breaks = 5, main = "Histogram #3, Breaks = 5")

enter image description here

Moje Otázka zní: V každém z těchto histogramů tam jsou jiný počet "bary" (tj. koše). Například, v první histogram je 8 barů a ve třetím histogram jsou k dispozici 4 bary. Pro každý z těchto histogramů, existuje způsob, jak zjistit, které připomínky (z původního souboru "d") jsou umístěny v každém baru?

Teď, snažím se ručně dělat např. (pro histogram #3)

histogram3_bar1 <- my_data[which(my_data$d < 5 & my_data$d > 0), ]
histogram3_bar2 <- my_data[which(my_data$d < 10 & my_data$d > 5), ]
histogram3_bar3 <- my_data[which(my_data$d < 15 & my_data$d > 10), ]
histogram3_bar4 <- my_data[which(my_data$d < 15 & my_data$d > 20), ]


head(histogram3_bar1)

    index        d
1001  1001 4.156393
1002  1002 3.358958
1003  1003 1.605904
1004  1004 3.603535
1006  1006 2.943456
1007  1007 1.586542

Ale je tam více "efektivní" způsob, jak to udělat?

Díky!!!

1

Nejlepší odpověď

2

hist může sama o sobě poskytnout řešení na otázku, je problém, jak zjistit, které údaje jsou body, ve kterých intervalech. hist vrátí seznam s prvním členem breaks

Za prvé, aby problém reprodukovatelné nastavení RNG semen.

set.seed(2021)
a = rnorm(1000,10,1)
b = rnorm(200,3,1)
c = rnorm(200,13,1)
d = c(a,b,c)

Nyní, uložit návratovou hodnotu hist a findInterval řekni košů, kde každý z datových bodů.

h1 <- hist(d, breaks = 10)
f1 <- findInterval(d, h1$breaks)

h1$breaks
# [1] -2  0  2  4  6  8 10 12 14 16

head(f1)
#[1] 6 7 7 7 7 6

Prvních šest pozorování jsou intervalech 6 a 7 s koncovými body 8, 10 a 12, jak lze vidět indexování d o f1:

head(d[f1])
#[1]  8.07743 10.26174 10.26174 10.26174 10.26174  8.07743

Ať už intervaly dané koncové body 8, 10 a 12 jsou vlevo nebo vpravo-zavřeno, viz help("findInterval").

Jako konečná kontrola, stolní hodnoty vrácené findInterval a uvidíme, jestli se shodují histogram se počítá.

table(f1)
#f1
#  1   2   3   4   5   6   7   8   9 
#  2  34 130  34  17 478 512 169  24 
h1$counts
#[1]   2  34 130  34  17 478 512 169  24

Mít intervaly pro každý datový bod, následující

bins <- data.frame(bin = f1, min = h1$breaks[f1], max = h1$breaks[f1 + 1L])
head(bins)
#  bin min max
#1   6   8  10
#2   7  10  12
#3   7  10  12
#4   7  10  12
#5   7  10  12
#6   6   8  10
2021-11-22 17:37:39

@ Rui Bandaras : děkuji za vaši odpověď! existuje způsob, jak přidat "min-max rozsah" pro každý z těchto řezů? děkuji!!!
stats555

@stats555 se přidat myslíš definovat ručně nebo aby si ty hist používá? (Odpověď je ano na obě.)
Rui Barradas

Rui Bandaras: děkuji za vaši odpověď! měl jsem na mysli ty, které hist používá? děkuji!!!
stats555

@stats555 Zkusit minmax <- data.frame(min = h1$breaks[f1], max = h1$breaks[f1 + 1L]);head(minmax). Bude upravit otázku.
Rui Barradas

děkuji moc za vaši pomoc!
stats555

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................