我想将滚动功能应用于数据集但是我使用rollapply得到了错误的输出。我提供了一个可以测试的数据集。
这是我的数据集:
library(zoo)
source('k.r')
set.seed(2)
data<-runif(60, min= 1, max= 4) ########this is my data
cbind(data)
#this is a call to rollapply and my "k" function
k<-rollapply(data, 21, FUN="k")
k
################here is my "k" function
k<- function(data)
{
minData<-min(data)
maxData<-max(data)
value <- ( data[length(data)]- minData)/(maxData - minData) * 100
}
k的输出低于,我的问题是为什么有2&#34; 0&#34;元素和&#34; 100&#34;元件。当我在excel中粘贴数据向量的值并执行此计算时,我得不到0或100.
作为一个仔细检查,如果你将cbind(数据)的值粘贴到excel中,你可以使用这个公式来看到不应该有&#34; 0&#34;或&#34; 100&#34;: =(B22-MIN(B2:B21))/(MAX(B2:B21)-MIN(B2:B21))* 100
65.1105969
34.6753392
84.5233679
8.378125
30.2071295
45.9047099
8.2389469
31.2932327
98.4741346
6.3669142
0
15.9658672
82.7940886
88.8675737
52.1610354
63.8501035
87.5854463
28.8224679
68.9761351
14.7081374
100
29.5060511
10.7760849
15.7298722
96.120093
80.7617139
99.2752118
34.8676243
50.6072898
82.3609341
0
0.7782399
69.3906549
94.6637968
27.5279067
82.57081
79.9050722
100
61.80975
71.6114912
任何想法为什么rollapply正在撤退&#34; 0&#34;和&#34; 100&#34;?
谢谢。
答案 0 :(得分:0)
excel公式在最小值和最大值的计算中排除data[length(datea)]
,但函数k
包含它。