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。 –