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?如果沒有,解決上述問題的好方法是什麼?謝謝!
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?如果沒有,解決上述問題的好方法是什麼?謝謝!
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>
我不知道是否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
旁觀者的眼睛......我通常更喜歡顯式的'ifelse'結構來邏輯 - >數字強制... – 2012-04-05 19:23:19
參見:http://stackoverflow.com/questions/9409817/a-7bb-assignment-with-succint-conditional-in-r/9409906 – 2012-03-25 12:01:05