【发布时间】:2015-08-21 15:39:21
【问题描述】:
我是 R 的新手,并且已经被一个问题困扰了很长一段时间...... 我有一个包含超过 1,000,000 个观察值的大数据集(最初是网格数据),并且必须为我的元素创建一个组变量。 我的数据集如下所示:
ID Var1
1 0,5
2 0,6
3 0,2
4 0,15
... ...
1029600 0,43
我现在想要的是按照以下方案进行分组:
1 2 3 4 5 6 ... 4320
4321 4322 4322 4322 4322 4322 ... 8640
8641 8642 8643 8644 8645 8646 ... 12960
12961 12962 12963 12964 12965 12966 ... 17280
17281 17282 17283 17284 17285 17286 ... 21600
21601 21602 21603 21604 21605 21606 ... 25920
... ... ... ... ... ... ... ...
1025281 1025282 1025283 1025284 1025285 1025286... 1029600
其中 36 个数字 {1,2,3,4,5,6,4321,4322,4323,4324,4325,4326,8641,8642,...,21060} 是第一组。 第二组是 {7,8,9,10,11,12,4327,4328,...,21612}。第三组将从 {13,14,15...} 开始。等等所有的观察。我希望我能明确我的目标是什么。我想用图片来形象化,但作为新成员,这是不可能的。
到目前为止,我设法用一个非常丑陋的循环函数来做到这一点,如下所示:
for(k in 0:40) {
nk <- 25920 * k
mk <- 720 * k
for (j in 0:719) {
cj <- j * 6
for (i in 0:5) {
ai <- i * 4320 + 1 + cj + nk
bi <- i * 4320 + 6 + cj + nk
group[ai:bi] <- 1 + j + mk
}
}
}
我知道这是非常低效的,并且使用循环计算它需要很长时间。我很确定有一种更简单的方法可以解决我的问题,但是由于我是 R 新手,所以我自己找不到。
任何帮助将不胜感激。提前谢谢!
【问题讨论】:
-
我很困惑。为了澄清我正确理解了这个问题:您是否想根据矩阵中子矩阵中的 ID 位置为具有连续 ID 的数据帧添加分组因子?
-
你的问题不是很清楚,但听起来你想要的东西类似于here所要求的东西