【发布时间】:2017-07-27 16:32:38
【问题描述】:
我正在尝试创建一个数据框 (BOS.df),以便探索我将在接收实际数据之前执行的未来分析的结构。在这种情况下,假设有 4 家餐厅希望投放广告活动(“餐厅”变量)。活动将持续的总天数是 cmp.lngth。我想要他们为广告计费的随机数(ra.num)。广告活动从 StartDate 开始。最终,我想为每个餐厅的循环创建一个数据框,并通过添加行来为广告活动的每一天添加一个随机帐单号码。
#Create Data Placeholders
set.seed(123)
Restaurant <- c('B1', 'B2', 'B3', 'B4')
cmp.lngth <- 42
ra.num <- rnorm(cmp.lngth, mean = 100, sd = 10)
StartDate <- as.Date("2017-07-14")
BOS.df <- data.frame(matrix(NA, nrow =0, ncol = 3))
colnames(BOS.df) <- c("Restaurant", "Billings", "Date")
for(i in 1:length(Restaurant)){
for(z in 1:cmp.lngth){
BOS.row <- c(as.character(Restaurant[i]),ra.num[z],StartDate +
cmp.lngth[z]-1)
BOS.df <- rbind(BOS.df, BOS.row)
}
}
我的代码现在无法正常运行。列名不正确,如果根本没有正确放置数据。输出如下:
X.B1. X.94.3952435344779. X.17402.
1 B1 94.3952435344779 17402
2 B1 <NA> <NA>
3 B1 <NA> <NA>
4 B1 <NA> <NA>
5 B1 <NA> <NA>
6 B1 <NA> <NA>
如何获得正确的输出?有没有比使用 for 循环更有效的方法?
【问题讨论】:
-
lenght(Restuarant)中的拼写错误无济于事。而cmp.lngth[z]毫无意义,因为cmp.lngth是一个数字,而不是一个向量——你可能只想在这里z。 -
嘿,安德鲁。感谢您的反馈。拼写错误来自我将代码翻译成我提交的内容,因此无法远程识别。
标签: r dataframe simulation