我的數據是這樣的:特定值的一個數據幀的總和高效採樣
df <- data.frame(
x = c("dog", "dog", "dog", "cat", "cat", "fish", "fish", "fish", "squid", "squid", "squid"),
y = c(10, 11, 6, 3, 4, 5, 5, 9, 14, 33, 16)
)
我想通過數據進行迭代,並在某些「列入/過濾器」列表抓住每個動物的一個值,然後將它們相加。
例如,也許我只關心狗,貓和魚。
animals <- c("dog", "cat", "fish")
在再取樣1,我能得到10,圖4,圖9(總和= 23),並在再取樣2我能得到6,3,5(總和= 14)。
我剛剛颳起了真正janky重複/爲上dplyr
傾斜功能,但它似乎超級低效:
ani_samp <- function(animals){
total <- 0
for (i in animals) {
v <- df %>%
filter(x == i) %>%
sample_n(1) %>%
select(y) %>%
as.numeric()
total <- total + v
}
return(total)
}
replicate(1000,ani_samp(animals))
我會如何改善這種採樣/僞引導代碼?