Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何编制遵循特定模式的观察数?_R_Pattern Recognition - Fatal编程技术网

R 如何编制遵循特定模式的观察数?

R 如何编制遵循特定模式的观察数?,r,pattern-recognition,R,Pattern Recognition,我有一个包含三个变量(DateTime、Transmiter和timediff)的数据集。timediff列是变送器后续检测之间的时间差。我想知道有多少次的时差遵循了特定的模式。这是我的数据样本 > dput(Example) structure(list(DateTime = structure(c(1501117802, 1501117805, 1501117853, 1501117857, 1501117913, 1501117917, 1501186253, 1501186254

我有一个包含三个变量(DateTime、Transmiter和timediff)的数据集。timediff列是变送器后续检测之间的时间差。我想知道有多少次的时差遵循了特定的模式。这是我的数据样本

> dput(Example)
structure(list(DateTime = structure(c(1501117802, 1501117805, 
1501117853, 1501117857, 1501117913, 1501117917, 1501186253, 1501186254, 
1501186363, 1501186365, 1501186541, 1501186542, 1501186550, 1501186590, 
1501186591, 1501186644, 1501186646, 1501186737, 1501186739, 1501187151
), class = c("POSIXct", "POSIXt"), tzone = "GMT"), Transmitter = c(30767L, 
30767L, 30767L, 30767L, 30767L, 30767L, 30767L, 30767L, 30767L, 
30767L, 30767L, 30767L, 30767L, 30767L, 30767L, 30767L, 30767L, 
30767L, 30767L, 30767L), timediff = c(44, 3, 48, 4, 56, 4, 50, 
1, 42, 2, 56, 1, 8, 40, 1, 53, 2, 37, 2, 42)), row.names = c(NA, 
20L), class = "data.frame")
看一下时差列,我想知道一个timediff<8秒有多少次,两个timediff<8秒有多少次,三个timediff<8秒有多少次,依此类推


示例:在给定的数据集中,单个timediffOne
dplyr
的可能性可能是:

df %>%
 mutate(cond = timediff <= 8) %>%
 group_by(rleid = with(rle(cond), rep(seq_along(lengths), lengths))) %>%
 add_count(rleid, name = "n_timediff") %>%
 filter(cond & row_number() == 1) %>%
 ungroup() %>%
 count(n_timediff)

n_timediff     n
       <int> <int>
1          1     8
2          2     1

你能解释一下输出应该是什么样子吗?@Dave2e我不完全确定,但请看更新后的问题作为示例。你知道为什么会得到8个timediff_1和1个timediff_2吗?通过计算和物理计算,我分别得到7和2。手动计算,在您提供的示例数据中,我仍然得到8和1。当我运行代码时,我得到一个错误,即找不到对象n_timediff。我必须事先创建一个新对象吗?计数错误(,n_timediff):对象“n_timediff”找不到。如果实际数据的结构与示例数据没有差异,那么我看不出问题的原因。但是,您可以尝试将
dplyr
tidyr
更新为其最新版本。
df %>%
 mutate(cond = timediff <= 8) %>%
 group_by(rleid = with(rle(cond), rep(seq_along(lengths), lengths))) %>%
 add_count(rleid, name = "n_timediff") %>%
 filter(cond & row_number() == 1) %>%
 ungroup() %>%
 count(n_timediff)

n_timediff     n
       <int> <int>
1          1     8
2          2     1
df %>%
 mutate(cond = timediff <= 8) %>%
 group_by(Transmitter, rleid = with(rle(cond), rep(seq_along(lengths), lengths))) %>%
 add_count(rleid, name = "n_timediff") %>%
 filter(cond & row_number() == 1) %>%
 ungroup() %>%
 group_by(Transmitter) %>%
 count(n_timediff) %>%
 mutate(n_timediff = paste("timediff", n_timediff, sep = "_")) %>%
 spread(n_timediff, n)

  Transmitter timediff_1 timediff_2
        <int>      <int>      <int>
1       30767          8          1