Создание нового столбца из существующего столбца с использованием R - PullRequest
2 голосов
/ 03 марта 2011

Я пытаюсь создать новый столбец (переменную) в соответствии со значениями, которые появляются в существующем столбце, так что, если в существующем столбце есть 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 ]

8 голосов
/ 03 марта 2011
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
> 
6 голосов
/ 03 марта 2011

Если я правильно понимаю:

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

или

data$surv <- ifelse(is.na(data$age), 0, 1)
3 голосов
/ 03 марта 2011

Альтернативой 1-is.na(foo) решению @ mod является просто инвертирование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...