2014-12-10 4 views
0

работает над анализом выживания. Создайте листок с фреймами данных со списком дат (как класс даты). (Таблица $ date.of.first.positive). Я хотел бы создать еще один столбец, где, если дата попадает в диапазон, я помещаю этот столбец как группу 0,1,2. Я попытался следующий код:Классифицировать по группам по дате

if (worksheet$date.of.first.positive < '2011-07-01'){ 
    worksheet$aspera2 <- 0 
}else if (worksheet$date.of.first.positive > '2012-10-01') { 
    worksheet$aspera2 <- 2 
} else{ 
    worksheet$aspera2 <- 1 
} 

Я получаю следующее сообщение об ошибке: предупреждение: В случае (таблица $ date.of.first.positive < "2011-07-01") {: условие имеет длину> 1, и будет использоваться только первый элемент.

Я прочитал логические ответы, но не совсем понимаю, что я делаю неправильно.

Ответ Динеша был именно тем, что мне нужно. Я использовал следующее. Вставить ifelse! Благодаря!

worksheet$aspera2 <- ifelse(worksheet$date.of.first.positive < '2011-07-01', 0, ifelse(worksheet$date.of.first.positive > '2012-10-01', 2, 1)) 
+1

Вы должны научиться использовать R 'date'-класс. Используйте 'cut' или' findInterval'. –

+0

Или если вы хотите побаловать себя некоторой логической гимнастикой: 'workheet $ aspera2 <- рабочий лист $ date.of.first.positive> = '2011-07-01' + рабочий лист $ date.of.first.positive> '2012 -10-01'' –

ответ

1

сообщение об ошибке краткое, но весьма содержательное. IF возвращает вектор T/F, но if не работает именно так. Попробуйте ifelse стиль

worksheet$aspera2 <- ifelse(worksheet$date.of.first.positive < '2011-07-01', "value-when-true", "value-when-false") 

И вы можете гнездо ifelse

+0

работал как шарм !! рабочий лист $ aspera2 <- ifelse (рабочий лист $ date.of.first.positive <'2011-07-01', 0, ifelse (рабочий лист $ date.of.first.positive> '2012-10-01', 2, 0)) –

Смежные вопросы