使用R从现有列创建新列

时间:2011-03-02 23:24:08

标签: r

我正在尝试根据现有列中显示的值创建新列(变量),这样如果现有列中有NA,则新列中的对应值应为0(零),如果不是NA那么它应该是1(一)。下面给出了一个示例数据:

aid=c(1,2,3,4,5,6,7,8,9,10)
age=c(2,14,NA,0,NA,1,6,9,NA,15)
data=data.frame(aid,age)

我的新数据框应如下所示:

aid=c(1,2,3,4,5,6,7,8,9,10)
age=c(2,14,NA,0,NA,1,6,9,NA,15)
surv=c(1,1,0,1,0,1,1,1,0,1)
data<-data.frame(aid,age,surv)
data

我希望我的问题足够明确。

R社区的帮助非常感谢!

巴兹

3 个答案:

答案 0 :(得分:8)

surv = 1 - is.na(age)

<小时/>

> data
   aid age surv
1    1   2    1
2    2  14    1
3    3  NA    0
4    4   0    1
5    5  NA    0
6    6   1    1
7    7   6    1
8    8   9    1
9    9  NA    0
10  10  15    1
> 

答案 1 :(得分:6)

如果我理解正确:

data$surv <- 1
data$surv[is.na(data$age)] <- 0

data$surv <- ifelse(is.na(data$age), 0, 1)

答案 2 :(得分:3)

@ mod 1-is.na(foo)解决方案的替代方案是,只需将TRUE / FALSE!反转,然后调用as.numeric()。这涉及更多的打字,但对数字的意图和明确的强制是显而易见的。

> as.numeric(!is.na(c(2,14,NA,0,NA,1,6,9,NA,15)))
 [1] 1 1 0 1 0 1 1 1 0 1