數據幀的ř2D分級我有通常看起來像這樣繼發覆雜的計算
df.data <- data.frame(x=sample(1:9, 10, replace = T), y=sample(1:9, 10, replace=T), vx=sample(-1:1, 10, replace=T), vy=sample(-1:1, 10, replace=T))
x和y的數據幀是位置。 vx和vy是2d矢量的x,y值。我想根據x和y值取這個數據框和「bin」,但是要對vx和vy進行計算。這個函數除了使用一個對我的數據集來說太慢的循環外,
slowWay <- function(df)
{
df.bin <- data.frame(expand.grid(x=0:3, y=0:3, vx=0, vy=0, count=0))
for(i in 1:nrow(df))
{
x.bin <- floor(df[i, ]$x/3)
y.bin <- floor(df[i, ]$y/3)
print(c(x.bin, y.bin))
df.bin[df.bin$x == x.bin & df.bin$y == y.bin, ]$vx = df.bin[df.bin$x == x.bin & df.bin$y == y.bin, ]$vx + df[i, ]$vx
df.bin[df.bin$x == x.bin & df.bin$y == y.bin, ]$vy = df.bin[df.bin$x == x.bin & df.bin$y == y.bin, ]$vy + df[i, ]$vy
df.bin[df.bin$x == x.bin & df.bin$y == y.bin, ]$count = df.bin[df.bin$x == x.bin & df.bin$y == y.bin, ]$count + 1
}
return(df.bin)
}
這種類型的二維裝倉可能以非循環的方式嗎?
感謝您的回答。完美的作品。其實更好。我不需要0計數的行,它們只是我做事的方式的產物。 – robbie 2013-03-11 14:20:05