gpt4 book ai didi

R 条形图与 bin 划分

转载 作者:行者123 更新时间:2023-12-01 09:56:57 27 4
gpt4 key购买 nike

我需要制作一个条形图,将数据分为多个 bin。

我的数据如下所示:

1.0 5
1.2 4
2.4 1
4.3 6
5.2 10

然后在X轴上我想有时间的值,比如:[1-4)、[4-5)等(取决于csv文件中的数据)。

在 Y 轴上,我希望出现多次,例如 10、16 等。

我已经写了这个 R 代码:

dataset <- read.csv("/Users/MNeptune/Documents/workspace R/BarPlot/times.csv")
dataset <- data.matrix(dataset, rownames.force = NA)
time <- dataset[,1]
occurence <- dataset[,2]
min <- min(time);
max <- max(time);

# Creo i bin
Groups <- cut(x = time, breaks = seq(from = min, to = max, by = 2))
Groups <- data.matrix(Groups, rownames.force = NA)

# Raggruppo i dati nei bin
Bygroup = tapply(occurence, Groups, sum)

# Faccio il plot dei bin
barplot(height = Bygroup, xlab = "time", ylab = "occurence")

但是代码没有正确地对数据进行分类(错误的数字并且不只是顺序)。问题出在哪里?

编辑1:

感谢 eipi10 我得到了这个(bin 长度为 0.01):

Time/Occurence graph with bin lenght of 0.01

现在的问题是如何读取 X 轴标签,因为我需要读取局部最小值的值。

如何放置 Y 轴之类的“比例尺”?

好的,我不能给出所有 bin 的确切值,但至少有一个 0.5?

最佳答案

如果您执行以下操作,您可以看到发生了什么问题:

seq(from=1.0, to=5.2, by=2)
[1] 1 3 5

cut(c(1.0,1.2,2.4,4.3,5.2), breaks=seq(from=1.0, to=5.2, by=2))
[1] <NA> (1,3] (1,3] (3,5] <NA>
Levels: (1,3] (3,5]

换句话说,seq 停止在小于 5.2 的最大值,即 5,因此您错过了 time=5.2 的行。另外,cut默认会排除取值范围的低端,所以当你使用time的最小值作为cut 范围。

这是您的代码的修改以获得您正在寻找的情节:

dat=read.table(text="time occurence
1.0 5
1.2 4
2.4 1
4.3 6
5.2 10", header=TRUE)

# Creo i bin
dat$Groups <- cut(x=dat$time, breaks=seq(from=0, to=ceiling(max(dat$time)), by = 2))

# Raggruppo i dati nei bin
Bygroup = tapply(dat$occurence, dat$Groups, sum)

# Faccio il plot dei bin
barplot(height = Bygroup, xlab = "time", ylab = "occurence")

enter image description here

如果你想要不同的中断,你当然可以调整 cutbreaks 参数。特别要注意 cutright 参数,它允许您选择是要在左侧还是右侧关闭中断间隔。 right=TRUE 是默认值,这就是为什么在原始代码中将第一行数据从 Groups 中排除的原因。

更新:为了回答你的后续问题,你可以找到 Bygroup 最小值的 bin 如下:

names(Bygroup)[which.min(Bygroup)]
[1] "(2,4]"

如果您想对 Bygroup 值进行排名以找到最低、次低等,您可以使用 rank,它返回每个值的排名:

rank(Bygroup)
(0,2] (2,4] (4,6]
2 1 3

关于R 条形图与 bin 划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com