R 如何获得附加条件的数据子集?
假设我们有一个公司的支出数据,其中我们有与不同项目相关的不同支出值。我们如何才能抽取样本,使样本中的支出总额占原始总支出(人口数据)的一定比例(比如80%)?请帮助 为再现性设置种子: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
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