通过将R中的变量分组来避免循环

西班牙火车

我是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中获取组:

group <- (((ID-1) %% 4320) %/% 6) +1

注意,这%%是模运算,%/%是整数除法。该公式应为您提供从1开始编号的组。无需将其包括在循环中,这是向量化操作。

有很多方法可以做到这一点(例如将1:1029600重塑为具有4320列的矩阵并采用6 * N:6 *(N + 1)列并进行匹配等操作),这就是为什么您应该始终停止想一想您真正想做什么。并意识到它归结为一点算术:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过将R中的标记行分组来将2列中的行相乘

来自分类Dev

通过将变量与dplyr分组来汇总多列的响应

来自分类Dev

通过将R中的连续月份分组来进行列表

来自分类Dev

在通过将 R 中的 var 与 NA 控制分组来分隔的某些观察值之前选择组

来自分类Dev

通过将变量拆分为多个变量来创建新列(在R中)

来自分类Dev

通过避免使用for循环来定义矩阵

来自分类Dev

通过将Stata中的IQR除以变量来创建变量

来自分类Dev

避免R中的for循环

来自分类Dev

在R中避免for循环

来自分类Dev

通过将数据集中的所有变量保留在r中来计算均值

来自分类Dev

R-根据更改的列条件,通过对变量进行分组来增加变量

来自分类Dev

通过对变量进行分组和子分组来查找平均值,并计算某个值在 R 中的这些组中出现的次数

来自分类Dev

通过循环一次将R中的三个(或更多)变量与ifelse进行比较

来自分类Dev

通过R中的多个分组变量确定协方差

来自分类Dev

将回归模型拟合到多个自变量和因变量,并通过将变量分组来获得单独的拟合

来自分类Dev

通过在全局变量中重用标题和其他关键花絮来避免视图重复

来自分类Dev

通过保留分组变量来删除多个列中具有0的行

来自分类Dev

在R编程中避免FOR循环

来自分类Dev

如何避免R中的for循环

来自分类Dev

避免R中的“ while”循环

来自分类Dev

如何通过循环将变量添加到字典中?

来自分类Dev

Javascript:通过for循环将数据存储在变量中

来自分类Dev

如何将分组变量转换为R中的列?

来自分类Dev

通过循环 R 命名变量

来自分类Dev

R ttest循环使用整洁的分组变量

来自分类Dev

通过R中的LM模型的变量列表创建循环

来自分类Dev

我可以通过将变量声明为本地线程来避免缓存一致性检查吗?

来自分类Dev

R:通过为循环添加和删除变量来迭代向量

来自分类Dev

通过将pandas数据框中的单个列分组来创建新列

Related 相关文章

  1. 1

    通过将R中的标记行分组来将2列中的行相乘

  2. 2

    通过将变量与dplyr分组来汇总多列的响应

  3. 3

    通过将R中的连续月份分组来进行列表

  4. 4

    在通过将 R 中的 var 与 NA 控制分组来分隔的某些观察值之前选择组

  5. 5

    通过将变量拆分为多个变量来创建新列(在R中)

  6. 6

    通过避免使用for循环来定义矩阵

  7. 7

    通过将Stata中的IQR除以变量来创建变量

  8. 8

    避免R中的for循环

  9. 9

    在R中避免for循环

  10. 10

    通过将数据集中的所有变量保留在r中来计算均值

  11. 11

    R-根据更改的列条件,通过对变量进行分组来增加变量

  12. 12

    通过对变量进行分组和子分组来查找平均值,并计算某个值在 R 中的这些组中出现的次数

  13. 13

    通过循环一次将R中的三个(或更多)变量与ifelse进行比较

  14. 14

    通过R中的多个分组变量确定协方差

  15. 15

    将回归模型拟合到多个自变量和因变量,并通过将变量分组来获得单独的拟合

  16. 16

    通过在全局变量中重用标题和其他关键花絮来避免视图重复

  17. 17

    通过保留分组变量来删除多个列中具有0的行

  18. 18

    在R编程中避免FOR循环

  19. 19

    如何避免R中的for循环

  20. 20

    避免R中的“ while”循环

  21. 21

    如何通过循环将变量添加到字典中?

  22. 22

    Javascript:通过for循环将数据存储在变量中

  23. 23

    如何将分组变量转换为R中的列?

  24. 24

    通过循环 R 命名变量

  25. 25

    R ttest循环使用整洁的分组变量

  26. 26

    通过R中的LM模型的变量列表创建循环

  27. 27

    我可以通过将变量声明为本地线程来避免缓存一致性检查吗?

  28. 28

    R:通过为循环添加和删除变量来迭代向量

  29. 29

    通过将pandas数据框中的单个列分组来创建新列

热门标签

归档