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,等等。
答案 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。