【发布时间】:2020-03-05 20:50:54
【问题描述】:
我正在使用 BTYD 模型来生成对客户未来交易的预测。不幸的是,由于使用 mcmc 方法,我无法对整个客户群(数十万)进行预测,因此我必须将基础拆分为许多随机样本,并在每个样本上执行该模型的多次运行以检索预测。
我的想法是使用循环来执行以下操作:
- 从整个库中检索长度为 10,000 的随机样本(我们将此数据帧称为“数据”)
- 将结果存储在名为“sample1”的对象中
- 现在我们必须回到“data”,排除“sample1”中的客户,并将新结果存储在“data”中。
- 从新的“数据”中获取一个新的随机样本(“sample2”)
- 创建一个新版本的“data”,不包括“sample2”(和“sample1”)中包含的所有客户。
- ...继续这个循环,直到我们完成碱基并创建了包含整个碱基的 N 个样本。
(每个 ID 只能在一个样本中)。
不幸的是,我的代码似乎并没有按照我想要的方式工作(目前我不太擅长循环。
getwd()
data<-read.csv("MOCK_DATA (1).csv")
# this is a fake dataset of 1000 rows that contains only 2 columns:
# customer ID (column name: "id") and a random number (column name "value").
# Every customer ID appears only once in the dataset.
head(data)
set.sample.size<-100
num.cycles<-ceiling(nrow(data)/set.sample.size)
for(i in 1:(num.cycles)) {
nam <- paste("sample_", i, sep = "")
assign(nam, data[sample(nrow(data), set.sample.size), ])
data<-data[!(data$id %in% nam$id),]
}
此代码生成以下错误: nam$id 错误:$ 运算符对原子向量无效
我期望得到 10 个名为“sample_1”..“sample_10”的对象,每个对象由原始数据中的 100 个随机 id 组成,但都是唯一的(10 个样本之间没有共享 ID)。
【问题讨论】:
-
我们应该如何加载
read.csv("MOCK_DATA (1).csv")?请在 Stack Overflow 上提问reproducible。
标签: r loops for-loop random sample