如何对数据帧进行采样而不是对行指数进行采样?
具体来说,我不确定如何更改indices
函数中的bs
参数以选择构成因子级别的多个行,而不是仅选择单个行索引。对于上下文,我使用函数bs
和boot
包中的boot
函数来引导置信区间。
函数bs
允许boot
函数使用indices
参数对数据框进行采样。
bs <- function(data, indices) {
d <- data[indices,] # allows boot function to select sample
shares <- aggregate(d$PASVINT3W, by=list(d$Prod), FUN = sum)
shares <- shares[1:4 , ]
names(shares) <- c("Prod", "sum.prob")
shares <- shares$sum.prob/sum(shares$sum.prob)
return(shares)
}
然后boot
实际进行抽样。
作为一个简化的例子,我有变量type1
,其中每两行被分组,即1,1,2,2,3,3。我想对这些分组进行抽样,而不是单个行。
device geslacht leeftijd type1
1 mob 0 53 1
2 tab 1 64 1
3 pc 1 50 2
4 tab 0 75 2
5 mob 1 54 3
6 pc 1 58 3
7 pc 1 57 4
8 pc 0 68 4
9 pc 0 66 5
10 mob 0 45 5
11 tab 1 77 6
12 mob 1 16 6
答案 0 :(得分:2)
base R
选项
lst <- split(seq_len(nrow(df1)), df1$type1)
df1[unlist(lst[sample(names(lst))]),]
或使用dplyr
library(dplyr)
df1 %>%
distinct(type1) %>%
mutate(type1 = sample(type1)) %>%
right_join(df1, .)