目前,我正在尝试使用114个obs和16个变量来引导数据集。
我使用了示例函数,如下所示:
x[sample(nrow(x),size=114,replace=TRUE),] where x is my dataset.
但是,我想用分配给特定列的概率进行采样,因为样本函数包含这种可能性。例如,我想对第5列进行抽样,数字概率介于1-5 0.1和数字5-200 0.9之间。
我该怎么做?
答案 0 :(得分:0)
如果我了解您正在寻找的内容,这可能是mapply
的工作。
# fake data
x <- as.data.frame(matrix(1:10,nrow=2))
x
V1 V2
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
# fake probabilities of each row, for each column
probs <- as.data.frame(matrix(c(.1,.1,.1,.2,.5,.5,.2,.1,.1,.1),ncol=2))
probs
V1 V2
1 0.1 0.5
2 0.1 0.2
3 0.1 0.1
4 0.2 0.1
5 0.5 0.1
# then a little mapply magic - change size as needed
mapply(sample, x=x, prob=probs, replace=T, size=10)
V1 V2
[1,] 5 7
[2,] 5 7
[3,] 2 6
[4,] 5 6
[5,] 1 6
[6,] 5 9
[7,] 1 9
[8,] 5 9
[9,] 5 6
[10,] 4 7