1
我想清理这个代码,并想知道如果任何人有任何建议如何在没有循环R运行此。我有一个名为数据的数据集,有100个变量和200,000个观测值。我想要做的事实质是扩展数据集,方法是将每个观察值乘以特定的标量,然后将这些数据组合在一起。最后,我需要一个包含800,000个观察值(我有四个类别创建)和101个变量的数据集。这是我写的这样做的一个循环,但效率非常低,我希望更快,更高效。如何矢量化在R循环
datanew <- c()
for (i in 1:51){
for (k in 1:6){
for (m in 1:4){
sub <- subset(data,data$var1==i & data$var2==k)
sub[,4:(ncol(sub)-1)] <- filingstat0711[i,k,m]*sub[,4:(ncol(sub)-1)]
sub$newvar <- m
datanew <- rbind(datanew,sub)
}
}
}
请让我知道你的想法和感谢您的帮助。
下面是2K的意见,而不是200K
# SAMPLE DATA
#------------------------------------------------#
mydf <- as.data.frame(matrix(rnorm(100 * 20e2), ncol=20e2, nrow=100))
var1 <- c(sapply(seq(41), function(x) sample(1:51)))[1:20e2]
var2 <- c(sapply(seq(2 + 20e2/6), function(x) sample(1:6)))[1:20e2]
#----------------------------------#
mydf <- cbind(var1, var2, round(mydf[3:100]*2.5, 2))
filingstat0711 <- array(round(rnorm(51*6*4)*1.5 + abs(rnorm(2)*10)), dim=c(51,6,4))
#------------------------------------------------#
请帮助我们来帮助你,通过(1)张贴一些样本数据,以及(2)解释你希望在这里用言语完成的事情。另外请注意,您不需要引用您在“subset”中进行子集的data.frame。 –