Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何获得附加条件的数据子集?_R_Subset_Sampling - Fatal编程技术网

R 如何获得附加条件的数据子集?

R 如何获得附加条件的数据子集?,r,subset,sampling,R,Subset,Sampling,假设我们有一个公司的支出数据,其中我们有与不同项目相关的不同支出值。我们如何才能抽取样本,使样本中的支出总额占原始总支出(人口数据)的一定比例(比如80%)?请帮助 为再现性设置种子: set.seed(12345) 创建一些示例数据,包括100个项目: dat <- data.frame(proj = 1:100, exp = sample(100:1000, 100, replace = TRUE)) totalexp <- sum(dat$ex

假设我们有一个公司的支出数据,其中我们有与不同项目相关的不同支出值。我们如何才能抽取样本,使样本中的支出总额占原始总支出(人口数据)的一定比例(比如80%)?请帮助

为再现性设置种子:

set.seed(12345)
创建一些示例数据,包括100个项目:

dat <- data.frame(proj = 1:100,
                exp = sample(100:1000, 100, replace = TRUE))
totalexp <- sum(dat$exp)

dat为再现性设定种子:

set.seed(12345)
创建一些示例数据,包括100个项目:

dat <- data.frame(proj = 1:100,
                exp = sample(100:1000, 100, replace = TRUE))
totalexp <- sum(dat$exp)

dat因此您有一个包含支出的列,并且您想要一个包含足够条目的样本,这样样本列的总和将是原始列总和的80%?随机排序数据,然后取前n行,其中累计支出总额大于或等于总支出的80%。请帮我输入累计金额代码,以便我可以获得累计金额为总金额80%的前n行?这会有很大的帮助!此外,我还必须确保变量原始支出比例在样本中保持不变。我们应该如何得到它?所以你有一个包含支出的列,你想要一个包含足够条目的样本,这样样本列的总和将是原始列总和的80%?随机排序数据,然后取前n行,其中累计支出总额大于或等于总支出的80%。请帮我输入累计金额代码,以便我可以获得累计金额为总金额80%的前n行?这会有很大的帮助!此外,我还必须确保变量原始支出比例在样本中保持不变。我们该怎么做?
dat$exp.cumsum <- cumsum(dat$exp.prop)
proj.sample <- dat$proj[1:(which(dat$exp.cumsum>0.80)[1]-1)]

proj.sample
 [1]  30  62  96  60  51  86  97  81  24  20  55  35  67  34  69  77  83  49   1  26  45
[22]  41   7  53  54  61  70  14  21  90   3  47  56  80  63  57  88  12  78  50  32  79
[43]  13  36   9  85  76  27  48  19  42  28  39  17  10  65  31  98  64  25 100  92  33
[64]  44  73  18  87   6  71  58  40  38  72  68  46  43  95  22