r - For Loops:移动范围
问题描述
所以我正在做的是为 x 和 y 坐标创建热图。但我想每隔 30 分钟做一次。例如,将使用从“00:00:00”到“00:30:00”的数据创建第一个热图,然后使用从“00:01:00”到“00:31:00”的数据创建下一个热图。
我需要帮助的是编写一个 for 循环,该循环可以从更大的数据库中提取这些行,然后为每个数据括号输出热图。
该数据库具有三列 x、y 和 indiv.times。x 和 y 是坐标系,indiv.times 是一个字符变量,其中包含例如格式为“13:04:46”的时间。
for (i in ???) {
kde <- kde2d(x, y)
plot_ly(z = kde$z, type = "heatmap")
}
这是创建热图的代码,所以我真的只需要一种方法来提取 30 分钟的间隔。
任何帮助将不胜感激。
编辑:
这是数据库的示例:
structure(list(x = c(224.7666, 223.3886, 131.7025, 345.333),
y = c(60.7657, 85.73872, 77.35342, 26.24607), indiv.times = c("14:00:02",
"14:00:02", "14:00:03", "05:10:26")), class = "data.frame", row.names = c(NA, -4L))
解决方案
split
一种方法是使用和按间隔将它们装箱findInterval
。
你的数据有点短,我会生成一些东西来演示:
set.seed(3)
df <- data.frame(
time = Sys.time() + cumsum(60*sample(20, size=10, replace=TRUE))
)
df
# time
# 1 2018-10-29 21:18:10
# 2 2018-10-29 21:35:10
# 3 2018-10-29 21:43:10
# 4 2018-10-29 21:50:10
# 5 2018-10-29 22:03:10
# 6 2018-10-29 22:16:10
# 7 2018-10-29 22:19:10
# 8 2018-10-29 22:25:10
# 9 2018-10-29 22:37:10
# 10 2018-10-29 22:50:10
让我们生成一些每 30 分钟标记一次的 bin:
bins <- seq(
round(min(df$time), "hour"),
round(max(df$time) + 15*60, "hour"),
by = "30 min"
)
bins
# [1] "2018-10-29 21:00:00 PDT" "2018-10-29 21:30:00 PDT"
# [3] "2018-10-29 22:00:00 PDT" "2018-10-29 22:30:00 PDT"
# [5] "2018-10-29 23:00:00 PDT"
现在把事情分开>
split(df, list(findInterval(df$time, bins)))
# $`1`
# time
# 1 2018-10-29 21:18:10
# $`2`
# time
# 2 2018-10-29 21:35:10
# 3 2018-10-29 21:43:10
# 4 2018-10-29 21:50:10
# $`3`
# time
# 5 2018-10-29 22:03:10
# 6 2018-10-29 22:16:10
# 7 2018-10-29 22:19:10
# 8 2018-10-29 22:25:10
# $`4`
# time
# 9 2018-10-29 22:37:10
# 10 2018-10-29 22:50:10
因此,您可以轻松地执行以下操作:
for (d in split(df, list(findInterval(df$time, bins)))) {
# d is a data.frame with all data inside a 30-min interval
}
推荐阅读
- android - 滑动手势防止点击下方
- python - 将函数输出重定向到文本文件
- microcontroller - ICR1 时间会错误地同步到溢出计数器吗?
- python - 设置 X 限制在 Seaborn 图中不起作用
- scala - 不使用 collect() 从 spark 数据帧返回 Array[String] 的有效方法
- javascript - Jquery:在 li mouseenter 上查找最近的 Div
- mapserver - 在自己的服务器上构建/安装 MapServer
- c# - Newtonsoft.Json.JsonConvert.DeserializeObject 到字符串错误
- css - 带 CSS 的圆圈(边框,仅轮廓)
- java - 运行 .wav 音频时显示运行时错误