Manipulating Data - 窗口平滑

问题

你想要计算序列给定窗口长度的平均数。这是平滑数据的一种方式。

方案

假设你有一个数值向量并且想要找出第一个连续四个数、第二个连续四个数等等如此的平均数。(就像用一个窗口在序列上移动,移动一次,计算一次)

# 生成有22个(0-99)以内的随机数向量
set.seed(123)
x <- floor(runif(22)*100)
x
#>  [1] 28 78 40 88 94  4 52 89 55 45 95 45 67 57 10 89 24  4 32 95 88 69

# 将向量长度取整到最接近的4的倍数
newlength <- ceiling(length(x)/4)*4
newlength
#> [1] 24

# 给新增的数值取NA值
x[newlength] <- NA
x
#>  [1] 28 78 40 88 94  4 52 89 55 45 95 45 67 57 10 89 24  4 32 95 88 69 NA NA

# 将它转换为4行的矩阵
x <- matrix(x, nrow=4)
x
#>      [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,]   28   94   55   67   24   88
#> [2,]   78    4   45   57    4   69
#> [3,]   40   52   95   10   32   NA
#> [4,]   88   89   45   89   95   NA

# 计算每一列的均值,忽略NA值
colMeans(x, na.rm=TRUE)
#> [1] 58.50 59.75 60.00 55.75 38.75 78.50
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的...
    MobotStone阅读 3,012评论 1 12
  • 前言 其实读完斯坦福的这本《互联网大规模数据挖掘》,让我感觉到,什么是人工智能?人工智能就是更高层次的数据挖掘。机...
    我偏笑_NSNirvana阅读 12,765评论 1 23
  • 对啊,我就是爱钱,爱情算个毛。 国庆了,大学生涯最后一次小长假,肯定是不能虚度的,比如去帝都、丽江,再不济也能到周...
    Lu安然阅读 2,384评论 32 46
  • 广告哈哈哈哈哈给哈哈哈 的默多克可靠快点快点快点买的看看倒买倒卖目瞪口呆可丁可卯的 的可可可可可可快点快点快点看看...
    潘总来也阅读 156评论 0 0
  • 这道题也比较简单,通过一个bool数组记录是否已访问过某位置字符即可,但是速度好像很慢,需要好好看看人家怎么写得,...
    殷水臣阅读 314评论 0 0