2012-03-25 23 views
1

隨着有沒有類似x的方法? y:z in R?

df <- data.frame(v1=c(1:5), v2=c(9,32,6,17,11)) 

我需要根據是否在v2中值與值1或0添加新列V3是大於10或不那麼認爲:

df 
    v1 v2 v3 
1 1 9 0 
2 2 32 1 
3 3 6 0 
4 4 17 1 
5 5 11 1 

有沒有像這樣的事情X ? y:z in R?如果沒有,解決上述問題的好方法是什麼?謝謝!

+2

參見:http://stackoverflow.com/questions/9409817/a-7bb-assignment-with-succint-conditional-in-r/9409906 – 2012-03-25 12:01:05

回答

7

ifelse(..)最接近:

R> df <- data.frame(v1=c(1:5), v2=c(9,32,6,17,11)) 
R> df$v3 <- ifelse(df$v2 > 10, 1, 0) 
R> df 
    v1 v2 v3 
1 1 9 0 
2 2 32 1 
3 3 6 0 
4 4 17 1 
5 5 11 1 
R> 
3

我不知道是否ifelse更快,但是這是更容易閱讀:

> d <- data.frame(v1=c(1:5), v2=c(9,32,6,17,11)) 
> d$v3 <- as.numeric(d$v2 > 10) 
> d 
    v1 v2 v3 
1 1 9 0 
2 2 32 1 
3 3 6 0 
4 4 17 1 
5 5 11 1 
+0

旁觀者的眼睛......我通常更喜歡顯式的'ifelse'結構來邏輯 - >數字強制... – 2012-04-05 19:23:19

相關問題