我正在尝试将函数应用于两个向量的连续值。这个问题可以简化为: x = c(2,4,6,8,10)
y = c(1,2,3,4,5)
for (i in 1:(length(x)-1)) {
a = mean(x[i:(i+1)])
b = mean(y[i:(i+1)])
print(a/b)
} 我想知道通过使用apply家族的函数来做同样的事情会有什么更有效的方法?谢谢!
这似乎是一个简单的问题,但我在这里很难找到堆栈溢出的解决方案。我有一个数据框架df,其中包含数据a和b列。我有一个复杂的函数(下面的简化示例),我想使用mapply应用于所有行。我遇到的问题是,我希望将n和n-1行的b作为函数的输入,而不是b。下面是一个例子
new.fun <- function( a, b ) { a * b }
a <- seq( from = 1, to = 10, by = 1 )
df <- data.frame( a , b = a * 10 )
mapply( new.fun, df$a, df$b )
除了用n
对于如下所示的数据框架:
Value Id
1 xxx-rrr-ttt
78 ggg-oop-rty
97 fad-dar-oki
.. ..
.. ..
.. ..
我需要计算每行的滚动平均值。因此,对于数据帧s,每行的滚动均值将表示为s.mean。R中有什么内置的函数可以计算rolling-mean吗?我尝试了以下几点:
rollapply(data)
但是它会抛出一个错误argument "width" is missing, with no default。我无法理解这个错误以及width是什么意思
给定以下数据:
set.seed(1)
data <- data.frame(o=c('a','a','a','a','b','b','b','b','c','c','c','c'), t=c(1,2,3,4,1,2,3,4,1,2,3,4), u=runif(12), v=runif(12))
data
o t u v
第一,全面披露。我试图严格地在带有相关子查询的MS Access中这样做,并在这篇文章中得到了一些帮助。我一开始以为我的数据很小,可以通过,但它是可怕的。作为另一种选择,我将尝试在R中运行这个程序,然后将结果写入MS Access中的一个新表。我有这样的数据,我有以下字段:
rep, cyc_date, amt
按照Andrie关于滚动5年期(相对于5年平均水平)的链接示例,我试图通过获得amt字段12个月的滚动平均值。这是我的代码:
library(zoo)
library(plyr)
library(RODBC)
# Pull data from local MS Access data
我正试图找到一个解决办法,但还没有。我有一个数据结构如下:
country City 2014 2015 2016 2017 2018 2019
France Paris 23 34 54 12 23 21
US NYC 1 2 2 12 95 54
我想找出移动平均每3年(即2014-16,2015-17,等等)放在临时栏中。
country City 2014 2015 2016 2017 2018 2019 2014-2016 2015-2017 2016-2018 2017-2019
France Paris 23
在连续数中检测n型最有效的方法是什么?可能是SQL列或向量,R.一些伪代码-R-来说明“问题”:
find Pattern in consecutive integers, where
2nd integer < 1st integer,
3rd integer > 2nd integer &
4th integer > 3rd integer.
a <- x
b <- x +1 < a
c <- x +2 > b
d <- x +3 > c
pattern <- c(a, b, c, d)
example:
我想要计算移动平均值,用已知的条目3,5和1填充NA条目。我如何使用R中的包动物园来实现这一点?
输入
> library(zoo)
> hh <- c(NA, NA, NA, 3, NA, 5, NA, 1, NA, NA, NA, NA)
失败
> rollmean(hh,na.omit=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA > rollmean(hh,4, na.omit=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA
zoo::rollmean是一个返回时间序列滚动均值的有用函数;对于长度为n和窗口大小为k的向量x,它返回向量c(mean(x[1:k]), mean(x[2:(k+1)]), ..., mean(x[(n-k+1):n]))。
我注意到,对于我正在开发的一些代码,它似乎运行得很慢,所以我使用Rcpp包和一个简单的for循环编写了自己的版本:
library(Rcpp)
cppFunction("NumericVector rmRcpp(NumericVector dat, const int window) {
const int n = dat.size();
Numeri
使用rollsum函数在zoo中,我看到NAs代替了我期望的有效值。使用rollapply的sum可以像预期的那样工作,但是rollsum没有:
library(zoo)
x <- c(1,2,3,NA,NA,4,5,6)
x
1 1 2 3 NA 4 5 6
rollapply(x, 3, FUN=sum, fill=NA)
1 NA 6 NA 15 NA
rollsum(x, 3, fill=NA)
1 NA 6 NA
我是不是遗漏了什么,或者这是rollsum正在使用的优化中的一个bug?