【问题标题】:R function to create 100 sample from a dataR函数从数据中创建100个样本
【发布时间】:2020-11-07 16:28:02
【问题描述】:

我需要创建 100 个独立样本,以便每个样本对客户有单一的观察。有一列 c_id 具有重复值。每个样品应有客户的单一记录。 这是我尝试过的代码

N_Sample<-100

for (s in 1:N_Sample){

 for (i in unique(data$cust_id)){

 k=sample(1:length(data$cust_id[data$cust_id==i]),1)

  }
}

有没有其他方法可以为上述场景创建示例。此外,我的数据集中还有“余额”列。对于每个样本,我需要计算“总余额”,然后计算所有 100 个样本的总余额平均值。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。

标签: r sample


【解决方案1】:

答案取决于您如何定义抽样方法。

如果您从数据框列中抽取 100 个客户 ID,那么您可以简单地执行此操作。请注意,如果您在采样时不需要重复发生,您可以输入replace = FALSE

sampled_obs = sample(x = unique(df$cust_id), size = 100, replace = TRUE)

如果您从数据框中的总行数中抽取 100 个数字,那么您可以简单地执行以下操作:

sampled_obs = sample(x = 1:nrow(df), size = 100, replace = TRUE)

如果您要对 100 个数字进行采样,但该子句是必须从数据帧的 1 到当前行号的集合中采样一个数字(我相信您的示例就是这种情况)。然后您可以执行以下操作:

samples = vector('numeric', length = nrow(df))
for(i in 1:nrow(df){
    samples[i] = sample(x = 1:i, size = 1)
}

【讨论】:

  • 总行数应等于我的数据集中的唯一 Cust_id。
  • 是样本量吗?
  • 目前正在使用 100 是我们需要创建的样本总数。 100 不是行数。 for (i in unique(data$cust_id)){ k=sample(1:length(data$cust_id[data$cust_id==i]),1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
相关资源
最近更新 更多