我有scores
(V3
)的一系列整數範圍(V1
到V2
)的數據幀。矢量化子集()?
scores <- structure(list(V1 = c(2037651L, 2037659L, 2037677L, 2037685L,
2037703L, 2037715L), V2 = c(2037700L, 2037708L, 2037726L, 2037734L,
2037752L, 2037764L), V3 = c(1.474269, 1.021012, 1.180993, 1.717131,
2.361985, 1.257013)), .Names = c("V1", "V2", "V3"), class = "data.frame",
row.names = c(NA, -6L))
V1 V2 V3
1 2037651 2037700 1.474269
2 2037659 2037708 1.021012
3 2037677 2037726 1.180993
4 2037685 2037734 1.717131
5 2037703 2037752 2.361985
6 2037715 2037764 1.257013
我也有一個整數向量。
coords <- structure(list(V1 = c(2037652, 2037653, 2037654, 2037655, 2037656,
2037657, 2037658, 2037659, 2037660, 2037661, 2037662, 2037663,
2037664, 2037665, 2037666, 2037667, 2037668, 2037669, 2037670,
2037671)), .Names = "V1", row.names = c(NA, -20L), class = "data.frame")
對於每個整數(coords
),我想確定所有得分的平均值(在scores$V3
),其整數範圍(分數V1
到V2
)包含coord$V1
。爲了做到這一點,我嘗試過:
for(i in 1:nrow(coord)){
range_scores <- subset(scores,
scores$V1 <= coord$V1[i] & scores$V2 >= coord$V1[i])
coord$V2[i] <- mean(range_scores$V3)
}
該函數可以工作,但速度非常慢。
我怎樣才能更有效地完成同樣的事情?
你是指'coords $ V'還是'coords $ V1'? – mnel
我認爲你可能想用cut來創建一個新的專欄,然後是一個分裂樂隊的組合,但很難想象你正在做什麼。 –
我使用您的代碼時得不到相同的輸出。我的解決方案是:'coord $ V2 < - sapply(coord $ V1,function(x)mean(scores [scores [,2]> x&x> scores [,1],3]))''。然後,我讓你顯示輸出,但它的速度慢於你的:-(4倍(當我使用你的for循環中,所有的V2爲1.474269) – GSee