按特定行数分配唯一编号 R

Assign unique number by specific number of rows R

我提前道歉 - 我已经尝试找到这个问题的答案,但我很难使用正确的搜索词,所以这可能是重复的。我有一个大型数据集,我正在尝试为组分配一个唯一的数字。但是我需要分配一个数字而不是另一列中的组(因为它们不是唯一的)所以我需要按行号来完成。因此,我希望它每三行分配一个序列号,以便每组 3 现在都具有唯一的标签。

这是我所拥有的非常简化的版本。

 data<-data.frame(col1="a",col2=c("species1",       "species2","species3","species1", "species2","species3", "species1", "species2","species3")) 

如您所见,对于 col1,它都是 a,但 species1 重复了 3 次,所以我无法基于它创建一个独特的组。这就是我想要的:

data2=data.frame(col1="a",col2=c("species1", "species2","species3","species1", "species2","species3", "species1", "species2","species3"), col3=c(1,1,1, 2, 2, 2, 3, 3, 3)) 

希望我解释得很好?

谢谢

如果示例数据代表您的实际数据集,则以下代码应该有效:

data$col3 <- rep(seq_len(nrow(data)/3), each = 3)

data
#   col1     col2 col3
# 1    a species1    1
# 2    a species2    1
# 3    a species3    1
# 4    a species1    2
# 5    a species2    2
# 6    a species3    2
# 7    a species1    3
# 8    a species2    3
# 9    a species3    3