Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R-对多个列执行Zoo rollapply/rollmean

R-对多个列执行Zoo rollapply/rollmean
EN

Stack Overflow用户
提问于 2019-06-12 14:05:17
回答 2查看 961关注 0票数 0

我想计算15天的滚动平均值(向后和向前)。下面是一个测试帧:

代码语言:javascript
运行
AI代码解释
复制
date_list = seq(ymd('2000-01-15'),ymd('2010-09-18'),by='day')
testframe = data.frame(Date = date_list)
testframe$Day = substr(testframe$Date, start = 6, stop = 10)
testframe$V1 = runif(3900, 2.0, 35.0)
testframe$V2 = runif(3900, 5.0, 40.0)
testframe$V3 = runif(3900, -10.0, 10.0)
testframe$V4 = seq(from = 5, to = 45, length.out = 3900)

我知道如何计算每一列的值:

代码语言:javascript
运行
AI代码解释
复制
library(zoo)
rollmean(testframe$V4, 31)
rollapply(testframe$V4, 31, mean)

但是我如何才能一次对每一列执行此操作呢?我想我必须为此排除Day和Date列,但是我如何在命令中做到这一点呢?我如何才能在使用NAs的旧测试帧中获得前15天和最后15天的结果?

我试过这个:

代码语言:javascript
运行
AI代码解释
复制
testframe[paste0("new_col",1:4)] <- lapply(testframe[,3:6], rollapply, FUN = mean, width = 31)

但是它不起作用!

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 14:11:15

rollmean和rollapply的默认操作是对每一列执行操作。请查看?rollapply

代码语言:javascript
运行
AI代码解释
复制
library(zoo)
rollmeanr(BOD, 2, fill = NA)

给出了将滚动平均值应用于内置BOD的每一列的如下内容:

代码语言:javascript
运行
AI代码解释
复制
     Time demand
[1,]   NA     NA
[2,]  1.5   9.30
[3,]  2.5  14.65
[4,]  3.5  17.50
[5,]  4.5  15.80
[6,]  6.0  17.70

如果您只想将平均值应用于某些列,则指定:

代码语言:javascript
运行
AI代码解释
复制
if (exists("BOD", .GlobalEnv)) rm(BOD)
BOD[1:2] <- rollmeanr(BOD[1:2], 2, fill = NA)

请注意,如果您拥有除索引列之外的所有数值列,那么只使用zoo对象会比尝试强制将所有内容都拟合到data.frames中要容易得多,因为这对时间序列不起作用。

代码语言:javascript
运行
AI代码解释
复制
if (exists("BOD", .GlobalEnv)) rm(BOD)
z <- read.zoo(BOD)
rollmeanr(z, 2)
票数 2
EN

Stack Overflow用户

发布于 2019-06-12 14:17:34

虽然@G.Grothendieck的答案在很多方面都更好,但这里有一些在你的案例中可能出现问题的上下文:

代码语言:javascript
运行
AI代码解释
复制
testframe[paste0("new_col",1:4)] <- lapply(testframe[,3:6], rollapply, FUN = mean, width = 31)
# Error in mean.default(X[[i]], ...) : 'trim' must be numeric of length one

这在一定程度上是因为您传递的是FUN=,但这也是lapply参数的名称,因此它在那里得到了有效的使用:

代码语言:javascript
运行
AI代码解释
复制
testframe[paste0("new_col",1:4)] <- lapply(testframe[,3:6], function(a) mean(a, trim=rollapply, width = 31))

mean的第二个参数是trim=,在本例中,它被传递给了函数rollapply,显然是不正确的。

下一步将是

代码语言:javascript
运行
AI代码解释
复制
testframe[paste0("new_col",1:4)] <- lapply(testframe[,3:6], function(a) rollapply(a, FUN = mean, width = 31))
# Error in `[<-.data.frame`(`*tmp*`, paste0("new_col", 1:4), value = list( : 
#   replacement element 1 has 3870 rows, need 3900

这是因为单个rollapply没有返回第一个/最后15个值(导致少了30个观察值)。您可以使用fill=NA修复此问题

代码语言:javascript
运行
AI代码解释
复制
testframe[paste0("new_col",1:4)] <- lapply(testframe[,3:6], function(a) rollapply(a, FUN = mean, width = 31, fill = NA))
# (no warnings/errors)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56564132

复制
相关文章
不允许对虚拟列执行 UPDATE 操作
之前使用sql查询方法 SELECT COLUMN_NAME FROM USER_TAB_COLS WHERE TABLE_NAME=?  结果查询到的还有表自己生成的隐藏列  虚拟列,结果进行新增操
全栈程序员站长
2021/04/07
9910
mysql语句根据一个或多个列对结果集进行分组
接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
用户4988376
2021/07/16
3.7K0
testng执行多个suite
由于testng.xml中只能设置一个<suite>标签,就无法创建多个测试集,通过<suite-files >标签可以实现允许多个测试集。
未来sky
2018/08/30
1.8K0
testng执行多个suite
scrapy顺序执行多个爬虫
# -*- coding:utf-8 -*- from scrapy import cmdline from scrapy.cmdline import execute import sys,time,os #会全部执行爬虫程序 os.system('scrapy crawl ccdi') os.system('scrapy crawl ccxi') #----------------------------------------------------- #只会执行第一个 cmdline.exe
周小董
2019/03/25
1K0
多个defer的执行问题
package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() } ---------------------------------------- 打印结果 打印后 打印中 打印前 ---------------------------------------- 多个defer使用,顺序是反的,第一个defer再最后一个执行,最后是在第一个执行。
公众号-利志分享
2022/04/25
3590
torch.utils.model_zoo
如果对象已经存在于 model_dir 中,则将被反序列化并返回。URL的文件名部分应遵循命名约定filename-<sha256>.ext,其中<sha256>是文件内容的SHA256哈希的前八位或更多位数字。哈希用于确保唯一的名称并验证文件的内容。model_dir 的默认值为
狼啸风云
2020/05/26
5270
机器学习-R-特征选择
特征选择是实用机器学习的重要一步,一般数据集都带有太多的特征用于模型构建,如何找出有用特征是值得关注的内容。 1. Feature selection: All-relevant selection with the Boruta package 特征选择两种方法用于分析: (1)最少最优特征选择(minimal-optimal feature selection)识别少量特征集合(理想状况最少)给出尽可能优的分类结果; (2)所有相关特征选择(all-relevant feature selection
机器学习AI算法工程
2018/03/13
2.2K0
机器学习-R-特征选择
Jquery如何删除table里面checkbox选中的多个行与多个列
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
4.4K0
Spark 多个Stage执行是串行执行的么?
这里的话,我们构建了两个输入(input1,input2),input2带有一个reduceByKey,所以会产生一次Shuffle,接着进行Join,会产生第二次Shuffle(值得注意的是,join 不一定产生新的Stage,我通过强制变更join后的分区数让其发生Shuffle ,然后进行Stage的切分)。
用户2936994
2018/08/27
1.3K0
Spark 多个Stage执行是串行执行的么?
转录组数据的基因表达变化情况探索
一般来说可以用CV或者MAD来衡量某基因在某些样本的表达变化情况。 标准差与平均数的比值称为变异系数,记为C.V(Coefficient of Variance)。 变异系数又称“标准差率”,是衡量资料中各观测值变异程度的另一个统计量。 当进行两个或多个资料变异程度的比较时,如果度量单位与平均数相同,可以直接利用标准差来比较。 平均绝对误差(Mean Absolute Deviation),又叫平均绝对离差,它是是所有单个观测值与算术平均值的偏差的绝对值的平均。 用下面的代码可以看看,标准差,平均数,变异系
生信技能树
2018/03/29
2.8K0
转录组数据的基因表达变化情况探索
执行多个模块的用例
已创建文件test_data_xiejinjieguo_ddt.xlsx,文件do_excel_ddt.py,文件http_request_jingtaifangfa.py,文件get_cookie.py,文件project_path_ddt.py,文件test_http_request_ddt.py,文件run_ddt_html.py,运行文件run_ddt_html.py
清菡
2020/12/02
1.3K0
执行多个模块的用例
scrapy如何顺序执行多个爬虫
scrapy如何单线程顺序执行多个爬虫,刚开始我天真的以为将多个excute顺序罗列就能依次执行每个爬虫了,代码如下所示: 谁料,在执行完第一个爬虫之后,整个程序就停止运行了。到底是什么原因呢?笔者在 Stack Overflow 上找到了类似的问题( https://stackoverflow.com/questions/24875280/scrapy-cmdline-execute-stops-script )。得知问题的原因在于 方法中的最后一句代码是 ,所以当程序执行完一个execute语
企鹅号小编
2018/01/29
2.2K0
scrapy如何顺序执行多个爬虫
apisix 多个插件截断执行顺序
两个插件的优先级 test2 priority = 80, test1 priority = 70, 两个插件各个阶段执行顺序 test2 rewrite test1 rewrite test2 access test1 access test2 body_filter test1 body_filter
空盒子里的巧克力糖
2022/12/02
7170
Detectron Model Zoo and Baselines
This file documents a large collection of baselines trained with Detectron, primarily in late December 2017. We refer to these results as the 12_2017_baselines. All configurations for these baselines are located in the configs/12_2017_baselines directory. The tables below provide results and useful statistics about training and inference. Links to the trained models as well as their output are provided. Unless noted differently below (see "Notes" under each table), the following common settings are used for all training and inference runs.
狼啸风云
2020/05/31
8980
vim-调用awk对列求和
潇洒
2023/10/20
5120
vim-调用awk对列求和
使用shell并行执行多个脚本
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53906996
用户1148526
2019/05/25
3.4K0
Golang防止多个进程重复执行
lockFile变量值自定义;在main函数执行完成后需要移除锁文件并关闭文件读取。
平也
2020/04/03
3K0
Python pandas依列拆分为多个Excel文件
问题:Python pandas依列拆分为多个Excel文件 实例:下面成绩表中按“班别”拆分为多个工作簿,一个班一个文件 ====代码==== import pandas as pd data = pd.read_excel("D:\yhd_python\yhd-python依列拆分Excel\汇总.xlsx") rows = data.shape[0] #获取行数 shape[1]获取列数 print(rows) data["身份证"]=[" %i"%i for i in data["身份证"]]
哆哆Excel
2022/10/25
1.6K0
Python pandas依列拆分为多个Excel文件
Python pandas按列拆分Excel为多个文件
还是用循环数据的方法来进行逐行判断并进行组合,再拆分。总是感觉与VBA的差别不大,Python的强大功能没能体现出来。今天终于学习到了。
哆哆Excel
2022/10/25
3.4K0
Python pandas按列拆分Excel为多个文件
点击加载更多

相似问题

R:对zoo矩阵对象进行Rollapply lm回归

12

R-具有多个"by“值的rollapply

49

关于zoo::rollapply的几个问题

21

替换zoo::rollmean结果中的NA值

20

来自zoo包的rollmean返回意外结果

219
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档