【发布时间】:2017-08-31 15:43:00
【问题描述】:
我有一个传感器可以测量一些事件(2 个或更多类别 + 它们之间的白噪声)。 我想在我的数据中添加一个窗口,并根据事件比例的一些规则对每个窗口进行分类:
- 如果窗口中超过 90% 的白噪声 => 所有行都必须标记为白噪声
- 如果白噪声低于 90%,则标记窗口中代表最多的事件
我找到了一种创建窗口的方法(但如果您有更好的方法我感兴趣,它就不是很优雅) 我不知道如何应用规则并在初始 data.frame 中标记行 注意:我不想“总结”我的数据,只需在每个窗口中添加一个重复的标签。 在示例中,我想要的输出是为所有窗口 1 和 2 观察添加标签“event1”,为窗口 3 添加标签“event2”,为窗口 4 添加标签“白噪声”,等等。
df = data.frame(value=c(1,1,1,2,2,1,2,1,3,2,3,6,7,8,4,2,1,1,1,2,1,1,2,1,3,3,1,5,8,9,9,8,
1,-4,-5,-7,-9,-3,-2,-1,1,1,1,1,1,2,1,1,1,2,1,1,1,2,2,1,2,3,5,7,7,7,6,2))
df$class="white.noise"; df$class[df$value<1]<-"event2"; df$class[df$value>2]<-"event1"
# first create a window
window.size=13
df2 = df %>% mutate('window' = rep(1:100, each=window.size)[1:nrow(df)])
# compute frequencies per window
df2 %>% group_by(window, class) %>% tally %>% mutate(n=n/window.size*100)
【问题讨论】: