首页 > 解决方案 > 获取 CSV 中 xyz 坐标停止变化的行

问题描述

我用 xyz 坐标和时间线测量了一个以 ms 为单位的对象。我的 CSV 看起来像这样:

TimeInSec  X.6   Y.6  Z.6
0.000000    -1.383422   -0.058891   0.023290    
0.004167    -1.387636   -0.058947   0.023584
0.008333    -1.391491   -0.058972   0.023989
...

我想在我的数据集中找到 xyz 坐标停止变化的行(在阈值内)。我想要的关键特征是从第 0 行到对象停止点的时间。

我的代码:

dummy.data <- read.csv (file="D:\\tmp\\dummy.csv", header = TRUE, skip = 6
dummy.data %>%
  gather(key,value, X.6, X.7, X.8, Y.6, Y.7, Y.8, Z.6, Z.7, Z.8) %>%
  ggplot(aes(x=Time..Seconds., y=value, colour=key)) +
  geom_line()

非常感谢您的帮助!

示例图: 示例图

这是 RawData CSV RawData的链接

标签: rtimecoordinatesmeasure

解决方案


我认为根据您的描述,您只想确定连续行中 x、y 和 z 值之间的差异低于某个阈值的点:

threshold <- 0.001
stop_row  <- which(abs(diff(dummy.data$X.6)) < threshold &
                   abs(diff(dummy.data$Y.6)) < threshold &
                   abs(diff(dummy.data$Z.6)) < threshold )

所以现在你可以这样做:

result <- dummy.data$TimeInSec[stop_row] - dummy.data$TimeInSec[1]

推荐阅读