我有上述数据框,日期和时间以及相应的信号值。
for every 60 seconds
后,我需要计算mean
和Std dev
,并将该值替换为偏差很大的均值。例如,对于前60秒,如果2017-08-23 07:49:58的值偏离SD更多,则应将其替换为均值。这意味着“59”应该用卑鄙
代替 date-time RSSI
2017-08-23 07:49:38 -68
2017-08-23 07:49:48 -69
2017-08-23 07:49:58 -59
2017-08-23 07:50:08 -65
2017-08-23 07:50:18 127
2017-08-23 07:50:28 -74
2017-08-23 07:50:38 127
2017-08-23 07:50:48 -74
2017-08-23 07:50:58 127
2017-08-23 07:51:08 -74
2017-08-23 07:51:18 -65
2017-08-23 07:51:28 127
2017-08-23 07:51:38 -59
2017-08-23 07:51:48 -62
2017-08-23 07:51:58 -57
预期产出:
输出1:
date-time RSSI
2017-08-23 07:49:38 -68
2017-08-23 07:49:48 -69
2017-08-23 07:49:58 -59
2017-08-23 07:50:08 -65
2017-08-23 07:50:18 0
输出2:
date-time RSSI
2017-08-23 07:49:38 -68
2017-08-23 07:49:48 -69
2017-08-23 07:49:58 **-62**
2017-08-23 07:50:08 -65
2017-08-23 07:50:18 **-62**
此处-62 is mean and its replaced
答案 0 :(得分:2)
不要在R中使用for循环。尝试并使用向量解决方案,如果你需要性能,通常包data.table就是你想要的。
df$param <- gsub("pred", "Predicted", df$param)
df$param <- gsub("_", " ", df$param)
df$param <- gsub("moves", "Moves", df$param)
您想要的解决方案应该与此类似。 使用data.table读取csv最适合函数fread。