我有一个带有ID列的数据框,一个日期列(每个ID 12个月),我有23个数字变量.我希望在每个ID中按月获得百分比变化.我正在使用quantmod包来获得百分比变化.
这是一个只有三列的例子(为简单起见):
ID Date V1 V2 V3
1 Jan 2 3 5
1 Feb 3 4 6
1 Mar 7 8 9
2 Jan 1 1 1
2 Feb 2 3 4
2 Mar 7 8 8
Run Code Online (Sandbox Code Playgroud)
我试图使用dplyr和summarise_each函数,但这是不成功的.更具体地说,我尝试了以下(train是数据集的名称):
library(dplyr)
library(quantmod)
group1<-group_by(train,EXAMID)
foo<-function(x){
return(Delt(x))
}
summarise_each(group1,funs(foo))
Run Code Online (Sandbox Code Playgroud)
我也尝试在dplyr中使用do函数,但我也没有成功(我猜错了!).
我认为问题是Delt功能.当我用sum函数替换Delt时:
foo<-function(x){
return(sum(x))
}
summarise_each(group1,funs(foo))
Run Code Online (Sandbox Code Playgroud)
结果是每个变量在每个ID的日期之间求和.那么每个ID的百分比变化百分比怎么样呢?
我正在拟合随机森林,并使用以下代码将数据分为训练集和测试集:
train <- sample( 1:nrow(Boston), (nrow(Boston))/2) )
编辑:在这里,train 显然只是一个索引,因此测试集如下:
testB <- Boston[-train,]; head(test); length(test)
响应变量的名称是 medy,它是第十四列。
我的随机森林也有以下代码(实际上我在这里装袋,因为我的数据集中的变量总数是 13):
bag.boston1 <- randomForest(medv~., data=Boston, subset=train, mtry=13,
importance=TRUE, ytest=testB$medv, xtest= )
我对 ytest= 选项的论证正确吗?我这么认为,因为它只是测试数据集中的响应变量。
另外,我应该对 xtest= 选项使用什么参数?
我的一个想法是从测试数据集中消除响应变量,从而创建一个仅测试数据集中的预测变量的数据框,然后我可以让 xtest 参数成为结果 x 矩阵:
`x <- testB`
x[14] <- NULL # because the 14th column is the response variable
bag.boston1 <- randomForest(medv~., data=Boston, subset=train, mtry=13,
importance=TRUE, ytest=testB$medv, xtest=x)
Run Code Online (Sandbox Code Playgroud) SAS Enterprise Miner具有称为"分数代码节点"的东西.此节点将所有先前的代码(即创建新变量,输入缺失值,运行模型等)应用于完全未触及的数据集.除了使用保持样本(即测试数据)之外,我如何在R中执行此操作?