2017-08-09 147 views
0

我有一個Df的:ABC如下如何使嵌套ifelse循環動態

Sr|VALUE 
a |85 
b |120 
c |145 
d |225 
e |100 
f |325 
g |410 

我寫下面的代碼來創建一個數爲每個記錄,使得其0 VALUE < 100,1爲VALUE之間[100200),2值> = 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 

現在我使用其中IC想要一個代碼一個限定計數的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 
+1

如何使用'cut'即'有(ABC,切工(VALUE,符= C(-Inf,Stepdif *(1:2) ,Inf)))' – akrun

+1

查看'base'包中的'findInterval()'。 –

回答

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