将慢“WHILE”循环转换为“apply”类型函数

时间:2016-02-29 15:57:49

标签: r matrix while-loop apply

我创建了一个在相当大的数据集中执行的while循环。循环是这样的:

m = 9957 #Number of Events
n = 814 #Number of Hotels

Day.Zero = as.data.frame(matrix(0, 9957, 814))

其中:

London.Bookings$No.of.Rooms

简要解释,对于日期和酒店的每个组合(从其他两个数据框中提取),从列Types#memberType中产生总和并将其存入矩阵的相应行。

循环似乎没有错误地运行,但是在5分钟后停止它仍然在运行并且远未完成!

我想知道如何将一个适用的函数系列用作替代函数,以便更快地完成。

谢谢!

2 个答案:

答案 0 :(得分:1)

可能,

xtabs(No.of.Rooms ~ Stay.Date + Legacy.Hotel, data = London.Bookings)

为您提供类似于您想要的东西。

答案 1 :(得分:0)

使用库dplyr,您可以执行以下操作(假设您的输入数据框具有此类列名 - 从您的代码/问题中模糊地解释):

library(dplyr)
London.Bookings %>% group_by(Legacy.Hotel.Code, Stay.Date) %>% summarise(Total.No.of.Rooms = sum(No.of.Rooms))