所以我有 .csv 格式的数据,显示特定用户在几个月内进出建筑物的时间。我正在尝试使用 R 每 15/30 分钟将建筑物占用率制成表格以进行分析。
数据已被清理并采用大型ffdf
数据框(约 1100 万个条目)的形式。数据帧具有numeric
和factor
类型(它包括稍后可能有用的字符串和数字),并且打卡/打卡时间在格式为POSIXct
.
如果这是一个小得多的数据集,我会执行以下操作:
- 创建一个空的 .csv 文件(即
occupancy
)来存储入住率,时间作为列标题,日期作为行。 - 使用 for 循环在所有行中迭代以下内容:
- 计算建筑总时间(打卡时间 - 打卡时间)
- 从打卡条目中提取日期,存储为
inDate
- 使用
round_any
从plyr
包装中查找开始时间最近的 15 分钟上限,存储为nearest15
- 查找用户占用的完整 15 分钟积木的数量,通过
floor(as.numeric((clockouttime - clockintime)/15))
- 将 1 添加到用户正在构建的相关时间块数,从
occupancy[inDate, nearest15]
.
然而,遍历 1100 万行的 for 循环根本就没有效率。
有谁知道如何有效地做到这一点?我不知所措 -apply
据我所知,函数系列会将所有数据强制转换为单一类型。如果您不熟悉特定命令,则不需要它们,我只想有人指出正确的包和实现的总体思路。
我ff
目前正在使用访问数据,但如果有更好的包可以做到这一点,我愿意接受建议。
谢谢。
编辑:这是我正在查看的代码的编辑片段:
user_hash, section_hash, dept_id, col_a, col_b, clockin_datetime, clockout_datetime
EEDD1DA7F38CA42A35CF3C003B,85C7,TS,1,,2013-08-08 12:52:00,2013-08-08 23:00:00
2BCB6AA1603BB4357BC0D390C9,BFA3,VS,1,,2013-08-08 12:48:00,2013-08-08 22:58:00
46D859B55C4802DF51445025C5,943B,TS,1,,2013-08-08 11:58:00,2013-08-08 16:04:00
FE4EEA83AF6EA50CA5738B5610,00B3,VT,1,,2013-08-08 19:56:00,2013-08-08 23:04:00
8DB43D322F0AEF6D2B877862C3,DB1F,TS,1,,2013-08-08 12:49:00,2013-08-08 13:03:00
4E636571D425A74CA6B5FA7909,1860,VS,1,,2013-08-08 12:21:00,2013-08-08 14:01:00
26B41FA581408BDFD747234640,FDA4,VS,1,,2013-08-08 20:38:00,2013-08-08 23:03:00
A6C3C190BFFDCB4194774C1026,45C0,VT,1,,2013-08-08 12:58:00,2013-08-08 20:03:00
938506D977353EA65DC6BB5260,1819,VT,1,,2013-08-08 12:54:00,2013-08-08 16:01:00
E82F9350DA9FFC73EE6A66A286,04C1,VT,1,,2013-08-08 08:42:00,2013-08-08 12:45:00
6B92F1AB6B3EE193430B6B2793,6C2E,TS,1,,2013-08-08 09:58:00,2013-08-08 13:03:00
2B88836D8A4CA5183AAE5D3D9A,497C,TS,2,,2013-08-08 10:35:00,2013-08-08 16:06:00
我想到的期望输出是这样的,尽管任何显示我在任何给定时间段/日期入住的形式都可以。
date 12.00 12.15 12.30 12.45 .......
2013-08-01 1344 1632 3742 1024
2013-08-02 342 435 435 435
2013-08-03
2013-08-04
...