【发布时间】:2015-01-08 02:10:39
【问题描述】:
我有一个包含超过 200 万个条目的数据集,我将它们加载到数据框中。
我正在尝试获取数据的子集。我需要大约 10000 个条目,但我需要在一个变量上以相等的概率选择条目。
这是我的数据在str(data) 下的样子:
'data.frame': 2685628 obs. of 3 variables:
$ category : num 3289 3289 3289 3289 3289 ...
$ id: num 8064180 8990447 747922 9725245 9833082 ...
$ text : chr "text1" "text2" "text3" "text4" ...
您已经注意到我有 3 个变量:类别、id 和文本。
我尝试了以下方法:
> sample_data <- data[sample(nrow(data),10000,replace=FALSE),]
这当然可行,但如果不相等,则样本的概率。这是count(sample_data$category) 的输出:
x freq
1 3289 707
2 3401 341
3 3482 160
4 3502 243
5 3601 1513
6 3783 716
7 4029 423
8 4166 21
9 4178 894
10 4785 31
11 5108 121
12 5245 2178
13 5637 387
14 5946 1484
15 5977 117
16 6139 664
更新:这是count(data$category)的输出:
x freq
1 3289 198142
2 3401 97864
3 3482 38172
4 3502 59386
5 3601 391800
6 3783 201409
7 4029 111075
8 4166 6749
9 4178 239978
10 4785 6473
11 5108 32083
12 5245 590060
13 5637 98785
14 5946 401625
15 5977 28769
16 6139 183258
但是当我尝试设置概率时,我得到以下错误:
> catCount <- length(unique(data$category))
> probabilities <- rep(c(1/catCount),catCount)
> train_set <- data[sample(nrow(data),10000,prob=probabilities),]
Error in sample.int(x, size, replace, prob) :
incorrect number of probabilities
我知道示例函数在行号之间随机选择,但我不知道如何将其与类别的概率相关联。
问题:如何在类别变量的等概率上对我的数据进行抽样?
提前致谢。
【问题讨论】:
-
也许可以从我的“splitstackshape”包中查看
stratified函数? -
这看起来很有趣。我不知道那个包。我来看看。谢谢
-
您是否尝试为每个唯一 x 获取相同数量的案例?
-
是的,这正是我想要实现的目标。
-
也许也很有趣的是来自包 dplyr sample_n 和 sample_frac 与 group_by 结合。
标签: r