我正在尝试创建一个数据框(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循环更有效的方法?
拼写错误'也无济于事。 'cmp.lngth [z]'没有意义,因为'cmp.lngth'是一个单一的数字,而不是一个矢量 - 你可能只需要'z'在这里。 –
嘿,安德鲁。感谢您的反馈。拼写错误来自我将代码翻译成我的提交,以便它不是可以远程识别的。 –