У меня есть следующая база данных (дБ) со следующими переменными
ID = предметы
Порядок = порядок предметов (1 = ab, 2 = ba), который одинаков на всех экзаменах
Остальные переменные - это веса каждого субъекта (a и b) в разные периоды времени
Wa1 и Wb1 - веса на первом экзамене
Wa2 и Wb2 - веса на второмэкзамен
Wa3 и Wb3 - веса на третьем экзамене
| ID | Order | Wa1 | Wb1 | Wa2 | Wb2 | Wa3 | Wb3 |
+----+-------+-----+-----+-----+-----+------+------+
| 1 | 1 | 423 | 252 | NA | NA | 234 | 675 |
| 2 | 1 | NA | NA | 245 | 856 | 3245 | 423 |
| 3 | 2 | NA | NA | NA | NA | 534 | 4574 |
Я хотел бы иметь возможность сделать базу данных равномерной, чтобы веса всегда были перечислены в следующем порядке: ab (Order== 1)
Я ломал голову и не могу придумать простой способ в R для построчного, отрегулировать порядок весов так, чтобы они все были: ab (что равноПорядок == 1)
Очень долгим и трудоемким решением было бы создать новый столбец для каждой переменной (Wa1.1 и Wb1.1 и т. Д. И т. Д.) И использовать операторы ifelse
db$Wa1.1 <- ifelse(db$Order == 2, db$Wb1, db$Wa1)
db$Wb1.1 <- ifelse(db$Order == 2, db$Wa1, db$Wb1)
db$Wa2.1 <- ifelse(db$Order == 2, db$Wb2, db$Wa2)
db$Wb2.1 <- ifelse(db$Order == 2, db$Wa2, db$Wb2)
Но это не практично, так как размермоя реальная база данных очень большая и включает в себя еще много экзаменов
Любая помощь с более простым и эффективным решением (возможно, с использованием dplyr?) очень ценится
Редактировать: В приведенном выше случае только строка, гдеID == 3 изменится (поменялись местами Wa3 и Wb3) и будет выглядеть следующим образом:
| ID | Order | Wa1 | Wb1 | Wa2 | Wb2 | Wa3 | Wb3 |
+----+-------+-----+-----+-----+-----+------+------+
| 1 | 1 | 423 | 252 | NA | NA | 234 | 675 |
| 2 | 1 | NA | NA | 245 | 856 | 3245 | 423 |
| 3 | 2 | NA | NA | NA | NA | 4574 | 534 |