Если вы правильно поняли, вы хотите создать дихотомическую переменную, зависящую от значения строковой переменной, например: если TypeOfOutcome
соответствует любому из «Живых со стабильной болезнью», «Живой с прогрессирующим заболеванием» или «Живой» с полным ответом», Outcome
бы 1 в противном случае 0. Я предполагаю, что ваш набор данных похож на этот
mergedData <- data.frame(
TypeOfOutcome = c("Alive with stable disease", "Alive with progressive disease", "Alive with complete response", NA, "Died from melanoma"),
DateStageIV = sample(seq(as.Date('2011/01/01'), as.Date('2015/01/01'), by="day"), 5))
# TypeOfOutcome DateStageIV
# 1 Alive with stable disease 2013-05-09
# 2 Alive with progressive disease 2014-08-08
# 3 Alive with complete response 2013-02-10
# 4 <NA> 2014-05-23
# 5 Died from melanoma 2012-08-08
функция ifelse
подходит для этого из перекодировки, основной синтаксис:
ifelse(test, yes, no)
Если значение в test
истинно, верните значение yes
, иначе возвращайте значение no
. В этом случае test
- это все случаи, когда пациент все еще жив, о чем указывает строка в TypeofOutcome
, являющаяся «Живой со стабильной болезнью», «Живой с прогрессирующим заболеванием» или «Живой с полным ответом». Тест на это было бы:
test <- mergedData$TypeOfOutcome %in% c("Alive with stable disease", "Alive with progressive disease", "Alive with complete response")
test
будет TRUE
, если значение в TypeOfOutcome
соответствует любому из случаев после оператора %in%
. yes
затем будет 1 и no
будет 0. Чтобы создать новую переменную
mergedData$Outcome <- ifelse(test, 1, 0)
mergedData
# TypeOfOutcome DateStageIV Outcome
# 1 Alive with stable disease 2013-05-09 1
# 2 Alive with progressive disease 2014-08-08 1
# 3 Alive with complete response 2013-02-10 1
# 4 <NA> 2014-05-23 0
# 5 Died from melanoma 2012-08-08 0
1. Я не думаю, что ваш предыдущий код делает то, что вы считаете, что это (вам нужно% в% здесь. 2. Является ли с помощью регулярные выражения - вариант (поиск «умер» в результате. – Heroka
Ну, возможно, кодирование его в мертвое/живое. Я как бы искал что-то вроде (на словах): Результат = 1, если TypeofOutcome Alive со стабильной болезнью или Живой с прогрессирующим заболеванием ...., Исход = 0, если TypeofOutcome умер от меланомы, умер от других причин .... – Feli
Как вы хотите, чтобы значения NA обрабатывались? Вы могли бы сделать что-то вроде dat $ result <- grepl («Died», dat $ TypeOfOutcome) – Heroka