我有一个Df:abc如下
Sr|VALUE
a |85
b |120
c |145
d |225
e |100
f |325
g |410
我正在编写下面的代码来为每条记录创建一个计数,使得其值为0时为VALUE< 100,1为VALUE在[100,200]之间,2为VALUE> = 200
Stepdif<-100
abc = within(abc, {
Count = ifelse(abc$VALUE>=Stepdif & abc$VALUE<2*Stepdif,1,ifelse(abc$VALUE>=2*Stepdif ,2,0))
})
将结果作为
Sr|VALUE|Count
a |85 |0
b |120 |1
c |145 |1
d |225 |2
e |100 |1
f |325 |2
g |410 |2
现在我想要一个代码,我可以使用它来定义每100个持续时间的计数。我不想这样编写代码
Count = ifelse(abc$VALUE>=Stepdif & abc$VALUE<2*Stepdif,1,ifelse(abc$VALUE>=2*Stepdif & abc$VALUE<3*Stepdif,2,ifelse(abc$VALUE>=3*Stepdif & abc$VALUE<4**Stepdif,3,ifelse(abc$VALUE>=4*Stepdif ,4,0))))
相反,我想让它变得动态,这样如果我将迭代次数从4改为6,我就不必再次重写代码了。
expected result
Sr|VALUE|Count
a |85 |0
b |120 |1
c |145 |1
d |225 |2
e |100 |1
f |325 |3
g |410 |4
答案 0 :(得分:1)
希望这会有所帮助:
funfun=function(x,n){n=1:n*100; findInterval(x,n)}
funfun(k$VALUE,2)
[1] 0 1 1 2 1 2 2
funfun(k$VALUE,4)
[1] 0 1 1 2 1 3 4