【发布时间】:2018-10-24 19:17:39
【问题描述】:
我正在尝试使用组随机抽样data.table。每个组的样本大小将通过将频率乘以Sample_Size 来计算,这是输出data.table 中的预期行数。
我在 SO 上研究了这个主题。似乎类似的线程(Need to randomly sample a data set with multiple groups each with multiple factors 和 take randomly sample based on groups)假设权重分布均匀,这对我不起作用。
这是测试数据:
InputDT <- data.table::data.table ("Country"=c(rep("A",20),rep("B",10),rep("C",5),rep("D",2)), "ID"=c(1:20,101:110,201:205,301:302))
目标是按国家/地区对 ID 进行抽样。
这是我们想要的频率:
CountryFreq <-
data.table::data.table("Country"=unique(InputDT$Country), "Freq"=c(4/10,2/10,2/10,2/10))
这是输出data.table中的行数:
Sample_Size <- 10
作为一项规则,我们假设Sample_Size < nrows(InputDT)
这是手动创建的示例输出:
OutputDT <- structure(list(Country = c("A", "A", "A", "A", "B", "B", "C",
"C", "D", "D"), ID = c(1, 5, 7, 3, 102, 109, 203, 204, 301, 302
)), .Names = c("Country", "ID"), row.names = c(NA, 10L), class = "data.frame")
这是一个检查频率是否符合需要的测试:
Hmisc::describe(OutputDT$Country)
OutputDT$Country
n missing distinct
10 0 4
Value A B C D
Frequency 4 2 2 2
Proportion 0.4 0.2 0.2 0.2
有人可以帮帮我吗?我花了将近一天的时间尝试学习 R 中的采样,然后根据我的需要对其进行自定义。如有任何帮助,我将不胜感激。
【问题讨论】:
-
我们是否需要使用
CountryFreq数据 -
@akrun - 是的,akrun。绝对地。这有我们想要的每个国家/地区的频率。
标签: r random data.table