Создание новой переменной из трех существующих переменных в R - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть набор данных, похожий на приведенный ниже, и я хотел бы создать новую переменную на основе этих переменных, которую можно использовать с другими переменными в наборе данных.

Первая переменная ID - это идентификационный номер респондента.Переменная med равна 1 и 2, что указывает на различные виды лечения.Var1_v1 и Var1_v2 имеет четыре реальных варианта 1,2,3 или 9, и эти параметры предоставляются только тем, кто имеет == 1.Если med == 2, NA появляется в Var1s.Var2 получает NA, когда med == 1, и имеет реальные значения в диапазоне 1-3, когда med == 2.

ID <- c(1,2,3,4,5,6,7,8,9,10,11)
med <- c(1,1,1,1,1,1,2,2,2,2,2)
Var1_v1 <- c(2,2,3,9,9,9,NA,NA,NA,NA,NA) #ranges from 1-3, and 9
Var1_v2 <- c(9,9,9,1,3,2,NA,NA,NA,NA,NA) #ranges from 1-3, and 9
Var2 <- c(NA,NA,NA,NA,NA,NA,3,3,1,3,2)

#tables to show you what data looks like relative to med var
table(Var1_v1, med)
table(Var1_v2, med)
table(Var2, med)

Я некоторое время искал, чтобы выяснить, перекодирование / создание новой переменнойкод, но мне не повезло.

В конечном счете, я хотел бы создать новую переменную, скажем, Var3, на основе трех условий:

  • Использует значения из Var1_v1, еслизначение = 1, 2 или 3
  • Использует значения из Var1_v2, если значение = 1, 2 или 3
  • использует значения из Var2, если значения = 1, 2 или 3

И эта переменная должна быть в состоянии совпадать с идентификационным номером, чтобы ее можно было использовать в наборе данных.

Таким образом, конечная переменная должна выглядеть следующим образом:

 Var3 <- (2,2,3,1,3,2,3,3,1,3,2)

Спасибо!

1 Ответ

3 голосов
/ 04 февраля 2012

Что-то вроде

v <- Var1_v1
v[Var1_v2 %in% 1:3] <- Var1_v2[Var1_v2 %in% 1:3]
v[Var2 %in% 1:3] <- Var2[Var2 %in% 1:3]
v
[1] 2 2 3 1 3 2 3 3 1 3 2

, который использует один из них в качестве базы (вы также можете использовать чистый NA вектор) и просто заполняет только те части, которые соответствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...