通过在R中分组变量避免循环
我是R的新手,已经被一个问题困扰了很长一段时间。。。 我有一个大数据集(最初是网格数据),有超过1000000个观察值,必须为我的元素创建一个组变量。 我的数据集如下所示:通过在R中分组变量避免循环,r,loops,R,Loops,我是R的新手,已经被一个问题困扰了很长一段时间。。。 我有一个大数据集(最初是网格数据),有超过1000000个观察值,必须为我的元素创建一个组变量。 我的数据集如下所示: ID Var1 1 0,5 2 0,6 3 0,2 4 0,15 ... ... 1029600 0,43 我现在想要的是按照以下方案分组: 1 2 3 4 5
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,643214322432343244325432686442,…,21060}是第一组。
第二组是{7,8,9,10,11,1243274328,…,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
}
}
}
(0:40中的k){code>
nk您可以通过一个简单的公式从ID中获取组:
group创建样本数据
dtf <- data.frame(ID = 1:1e4, Var1 = rnorm(1:1e4))
第二组
dtfsplit[2]
我很困惑。为了澄清,我正确地理解了这个问题:您是否希望根据IDs在矩阵子矩阵中的位置,使用连续ID向您的数据帧添加分组因子?您的问题不是很清楚,但听起来您想要类似于要求的东西
dtfsplit <- split(dtf, group)
> dtfsplit[1]
$`1`
ID Var1
1 1 0.56655
2 2 0.87645
3 3 -1.41986
4 4 -1.84881
5 5 0.03233
6 6 3.06512
4321 4321 -1.57179
4322 4322 -1.09958
4323 4323 0.55980
4324 4324 0.32390
4325 4325 0.85438
4326 4326 -0.10311
8641 8641 2.08886
8642 8642 1.19836
8643 8643 0.52592
8644 8644 0.20571
8645 8645 1.08429
8646 8646 0.69648
dtfsplit[2]