如何使用for循环查找窗口大小中重复次数最多的数字
我有一个像这样的数据框如何使用for循环查找窗口大小中重复次数最多的数字,r,R,我有一个像这样的数据框 Time DT5.0_Prediction 20:10:36.051 IST 3 20:10:36.150 IST 3 20:10:36.251 IST 3 20:10:36.350 IST 3 20:10:36.450 IST 3 20:10:36.551 IST 1 20:10:36.651 IST
Time DT5.0_Prediction
20:10:36.051 IST 3
20:10:36.150 IST 3
20:10:36.251 IST 3
20:10:36.350 IST 3
20:10:36.450 IST 3
20:10:36.551 IST 1
20:10:36.651 IST 1
20:10:36.750 IST 1
20:10:36.851 IST 3
20:10:36.952 IST 1
20:10:37.051 IST 1
20:10:37.151 IST 1
20:10:37.252 IST 1
20:10:37.351 IST 3
20:10:37.452 IST 1
20:10:37.551 IST 1
20:10:37.652 IST 1
20:10:37.752 IST 3
20:10:37.853 IST 1
20:10:37.953 IST 1
20:10:38.053 IST 1
20:10:38.152 IST 1
20:10:38.252 IST 1
20:10:38.352 IST 1
20:10:38.453 IST 1
20:10:38.554 IST 1
我想使用10的窗口大小,得到如下数据
Starting Time Ending time Mode
20:10:36.051 IST 20:10:36.952 IST 3
20:10:37.051 IST 20:10:37.953 IST 1
20:10:38.053 IST 20:10:38.955 IST 1
等等
在上表的模式列中,数字“3”是该特定窗口中重复次数最多的,而“1”是下一个连续窗口中重复次数最多的
我使用了以下代码
a <- 1
for(i in 1: length(mydata[,2])){
b <- a+99
mydata$StartTime [i] <- mydata$Time[a]
mydata$EndTime [i] <- mydata$Time[b]
mydata$mode1234567 [i] <- ifelse( b <= nrow(mydata),
count(mydata[a:min(b, nrow(mydata)),2]),
NA)
a <- b+1
}
a一种方法是每10行分割一行,并基于每个元素创建一个数据帧,即
do.call(rbind,
lapply(split(df, (0:nrow(df) %/% 10)), function(i)
data.frame(Starting_Time = i[1,1],
Ending_Time = i[nrow(i),1],
mode = Mode(i[[2]]))))
这就给了,
其中,Mode
只是一个用于计算模式的自定义函数,取自
模式so。。如果连续行的模式编号相同,那么如何组合具有相同模式编号的行并获得相应的开始时间和结束时间…?我不确定您的意思。
Starting_Time Ending_Time mode
0 20:10:36.051_IST 20:10:36.952_IST 3
1 20:10:37.051_IST 20:10:37.953_IST 1
2 20:10:38.053_IST 20:10:38.554_IST 1
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}