我想编写一个函数,该函数根据现有变量创建一组变量。
我对R还是比较陌生,并试图重新创建我在VBA中拥有的功能。
称为“衰减”的函数应通过在变量“ var”上应用不同的衰减参数来创建一组变量,并将其保存在数据帧“数据”中。
它应该创建一个由19个变量组成的集合,这些变量通过将现有变量名'var'和衰减参数(其值分别为5,10,15,20,25,30 .... 95)串联起来来命名。
然后将值计算为:
decay <- function(var, data) {
for (i in 1:19) {
paste(data$var, i*5)
paste(data$var, i*5)[1] <- data$var[1]
for (j in 1:length(var) - 1) {
paste(data$var, i*5)[j + 1] <- data$var[j + 1] + paste(data$var, i*5)[j]*i*5
}
}
}
输出示例:
var var5 var10 var15 var20
100 100 100 100 100
0 5 10 15 20
150 150 151 152 154
20 28 35 43 51
0 1 4 6 10
0 0 0 1 2
50 50 50 50 50
60 63 65 68 70
答案 0 :(得分:0)
是每周时间序列数据。我一直在使用ts和xts对象。这是一个简化的示例-实际数据具有数百个变量和更长的变量名,这使得读取代码更加困难。
var
04/01/2016 100
11/01/2016 0
18/01/2016 150
25/01/2016 20
01/02/2016 0
08/02/2016 0
15/02/2016 50
22/02/2016 60
输出是通过将衰减函数应用于var创建的变量集。第一个值等于var的拳头值,任何后续值都是var中相应值的和+新变量* r / 100的上周值之和,其中r是衰减参数,取值为5,10,15,20 ... 95。可以这样写:
if t=1
new_var[t] = var[t]
if t>1
new_var[t] = var[t] + new_var[t-1]*r/100
我只希望变量名是串联的,或者是原始变量名(var)和衰减率r,例如当r = 5时为var5,当r = 10时为var10,等等。