是否有类似x的方式? y:z在R?

时间:2012-03-25 04:15:24

标签: r

使用

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

我需要根据v2中的值是否大于10来添加值为1或0的新列v3,以便:

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在R?如果没有,什么是解决上述问题的好方法?谢谢!

2 个答案:

答案 0 :(得分: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> 

答案 1 :(得分: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