【发布时间】:2012-07-17 19:04:36
【问题描述】:
我正在尝试创建类似于the ones here 的情节:
基本上我想要一个直方图,其中每个 bin 显示在该节奏范围内花费了多长时间(例如,0-20rpm 1 小时,21-40rpm 3 小时等)
library("rjson") # 3rd party library, so: install.packages("rjson")
# Load data from Strava API.
# Ride used for example is http://app.strava.com/rides/13542320
url <- "http://app.strava.com/api/v1/streams/13542320?streams[]=cadence,time"
d <- fromJSON(paste(readLines(url)))
d$cadence (rpm) 中的每个值都与d$time 中的相同索引(从开始的秒数)配对。
这些值不一定是统一的(如果您将 plot(x=d$time, y=d$cadence, type='l') 与 plot(d$cadence, type='l') 进行比较可以看出)
如果我做最简单的事情:
hist(d$cadence)
..这会产生非常接近的结果,但是 Y 值是“频率”而不是时间,并且忽略了每个数据点之间的时间(因此特别是 0rpm 段将被低估)
【问题讨论】:
-
Y值是“频率”是什么意思?你的意思是Y轴上的标签?这可以通过
hist(d$cadence, ylab="Time")解决。 -
你是说 desired 行为是忽略每个数据点之间的时间吗?即从 0 开始的条形代表恰好为 0 的样本数?
-
当我尝试你的代码时,我发现数字 == 0 是 4425,而数字
-
与@DavidRobinson 的评论一样,您可以使用
hist的附加参数指定bin 边缘。这将解决您在未绘制零转速值时遇到的困难。 -
我以前处理过这样的数据。我相信 OP 想要的是考虑样本之间的不均匀时间,例如如果一个样本是在 t=10 时以 95 的节奏采集的,而下一个样本直到 t=16 时才以 cadence=93 的节奏进行,那么指标应该表现得好像所有 10