首页 > 解决方案 > 如何在 R 中每 n 行创建一个具有相同 id 的新列?

问题描述

我有一个数据框,我想在其中创建一个新列,在其中每 30 行分配一次相同的 ID。

我的数据框来自一个实验,我希望创建一个新的“块”列,以便每 30 行它增加 1

例子:

col1 : 响应延迟 = 1,0002, 1.2566, ...30times, 1.5422, ...

col2 : 难度 = 简单、困难、中级、...

col3 : ID = 1, 2, 3, ...30 次, 31, 32, ...

我想要一个新专栏

新列 : bloc = 1, 1, ...30times, 2, 2, ...30times, 3, 3, ...

标签: r

解决方案


以 5 为例,但这当然适用于 30

df <- data.frame(rownum = 1:23)

bloc_len <- 5

df$bloc <- 
  rep(seq(1, 1 + nrow(df) %/% bloc_len), each = bloc_len, length.out = nrow(df))

df
#    rownum bloc
# 1       1    1
# 2       2    1
# 3       3    1
# 4       4    1
# 5       5    1
# 6       6    2
# 7       7    2
# 8       8    2
# 9       9    2
# 10     10    2
# 11     11    3
# 12     12    3
# 13     13    3
# 14     14    3
# 15     15    3
# 16     16    4
# 17     17    4
# 18     18    4
# 19     19    4
# 20     20    4
# 21     21    5
# 22     22    5
# 23     23    5

您也可以使用%/%(相同的输出)

df$bloc <- 
  1 + seq(0, nrow(df) - 1) %/% bloc_len

推荐阅读