每10个周期基于一个值在r中创建新列

时间:2018-07-17 10:02:27

标签: r loops dataframe

R和计算机科学的新手,请多加赞赏

试图弄清楚如何在数据框中创建与(x)值相对应的新列(y),x中的每个10值都应赋予一个新y。很难解释,不知道从循环或if语句开始。例如当前数据集

 event_id   x
      1     0
      2     2
      3     5
      4     11
      5     12 
      6     17
      7     25
      8     28
      9     30
      10    34

但是我希望它看起来像这样

 event_id   x    y
      1     0    1
      2     2    1
      3     5    1
      4     11   2
      5     12   2
      6     17   2
      7     25   3
      8     28   3 
      9     30   3
      10    34   4

希望这是有道理的,因为前三个值都是<10,所以给定值1,然后重复,因为接下来的三个值在10-20之间,所以y是2,等等。

3 个答案:

答案 0 :(得分:0)

您可以使用

df$y = df$x %/% 10 + 1

答案 1 :(得分:0)

df$y <- floor(df$x / 10.1) + 1

匹配OP请求:

#   event_id  x y
#1         1  0 1
#2         2  2 1
#3         3  5 1
#4         4 11 2
#5         5 12 2
#6         6 17 2
#7         7 25 3
#8         8 28 3
#9         9 30 3
#10       10 34 4

答案 2 :(得分:0)

df$y <- with(
  df, 
  findInterval(x, seq(0, max(x) + 10, by = 10))
)

df
   event_id  x y
1         1  0 1
2         2  2 1
3         3  5 1
4         4 11 2
5         5 12 2
6         6 17 2
7         7 25 3
8         8 28 3
9         9 30 4
10       10 34 4

假设30应该映射为4,就像0映射为1。