【发布时间】:2019-07-16 10:55:54
【问题描述】:
我正在总结大量传感器数据。 我需要提取 1.) 特定类别的最大运行长度和 2.) 运行中所有变量的汇总统计信息。
例如数据:
require(dplyr)
fruit <- as.factor(c('apple','apple','banana','banana','banana','guava','guava','guava','guava','apple','apple','apple','banana','guava'))
duration <- c(1,2,1,2,3,1,2,3,4,1,2,3,1,1)
set.seed(14)
temp <- round(runif(14, 80.0, 105.0))
test <- data.frame(duration, fruit, temp)
#Example Data Frame
duration fruit temp
1 apple 86
2 apple 96
1 banana 104
2 banana 94
3 banana 105
1 guava 93
2 guava 103
3 guava 91
4 guava 92
1 apple 90
2 apple 102
3 apple 84
1 banana 92
1 guava 101
我可以通过将每一行与前面的行进行比较来查看它们是否不同,从而完成 #1。
但是,此结果还返回最后一行的单个 Temp 条目,我希望能够计算 Temp 数据的各种摘要,例如平均值。
test %>% filter((lead(`fruit`) != `fruit`)| is.na(lead(`fruit`)) )
我想结束的框架更像是:
test %>%
filter((lead(`fruit`) != `fruit`)| is.na(lead(`fruit`)) ) %>%
select(-temp) %>%
mutate(mean_temp = c(91,101,94.8,92,92,101))
##Goal Output
duration fruit mean_temp
2 apple 91.0
3 banana 101.0
4 guava 94.8
3 apple 92.0
1 banana 92.0
1 guava 101.0
关于如何有效地做到这一点的任何想法?
【问题讨论】:
-
查看
rle()或data.table::rleid