迭代行,如果Columnx=1在新列中分配1,10x次后在新列中分配2

问题描述 投票:0回答:1

我是 Rstudio/R 新手,想使用 R 在我的数据框中创建块。我希望数据框中出现蓝色的前 10 次在新列中分配数字 1。一旦数字 1 被分配了 10 次,如果一行包含颜色 = 蓝色,则应将 2 输入到新列中。我正在考虑以某种方式迭代行,但不知道该怎么做。数据框看起来像这样:

           Day Color Color_block 
13          01  Green   NA               
14          01  Green   NA                 
15          01  Blue    1             
16          01  Red     NA                 
17          01  Red     NA               
18          01  Blue    2 # Say that that the Color = Blue above in row 15 was the 10th time number 1 was assigned 

我觉得这并没有那么难,我自己也尝试了一些,但没有成功。也许有一个我没有看到的非常简单的解决方案。预先感谢!

我尝试使用向量来实现这一点,但发现很难理解它们的逻辑。我开始尝试构建一个函数,该函数有效,但对于应该实现的目标来说似乎非常冗长。

r vector
1个回答
0
投票

您还没有真正提供足够的数据来测试,但我认为这应该有效:

library(dplyr) 
your_data |>
  mutate(
    color_block = ((row_number() - 1) %/% 10) + 1,
    .by = Color
  )
© www.soinside.com 2019 - 2024. All rights reserved.