计算R中的平均值,标准差和替换值

时间:2017-08-23 13:14:28

标签: r for-loop dataframe mean standard-deviation

我有上述数据框,日期和时间以及相应的信号值。

  1. 我需要用0
  2. 替换所有正值
  3. 替换for every 60 seconds后,我需要计算meanStd dev,并将该值替换为偏差很大的均值。
  4. 例如,对于前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

1 个答案:

答案 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。