Я работаю над набором данных, где люди должны были заполнять мероприятия в течение двух дней.Переупорядочить и объединить набор данных по дням
Анкета 1 был разработан, чтобы захватить день 1 и 2 вопросника за день 2. Но некоторые респонденты заполнены день 2 в анкете 1 и 1 день в анкете 2.
Поэтому в основном то, что я хочу, чтобы изменить и объединить (или объединить и переупорядочить) данные для того, чтобы каждый день первый и второй день получал данные для каждого респондента.
seq1 = as.data.frame(rbind(c(1, 1, 1, 'a', 'a', 'b', 'c'),
c(2, 1, 1, 'a', 'a', 'b', 'd'),
c(3, 1, 2, 'c', 'd', 'b', 'a'),
c(4, 1, 2, 'c', 'a', 'b', 'e')))
colnames(seq1) <- c('id', 'quest', 'day', paste('act',1:4))
seq2 = as.data.frame(rbind(c(1, 2, 2, 'a', 'a', 'b', 'd'),
c(2, 2, 2, 'c', 'a', 'b', 'c'),
c(3, 2, 1, 'a', 'd', 'b', 'c'),
c(4, 2, 1, 'd', 'a', 'b', 'c')))
colnames(seq2) <- c('id', 'quest', 'day', paste('act',1:4))
# seq1
id quest day act 1 act 2 act 3 act 4
1 1 1 1 a a b c
2 2 1 1 a a b d
3 3 1 2 c d b a # Mistake here
4 4 1 2 c a b e # Mistake here
# seq 2
id quest day act 1 act 2 act 3 act 4
1 1 2 2 a a b d
2 2 2 2 c a b c
3 3 2 1 a d b c # Mistake here
4 4 2 1 d a b c # Mistake here
Поэтому я хотел бы объединить свои данные, чтобы поставить 1-й и 2-й день после каждого другого.
merge(seq1, seq2, by = 'id', suffixes = c('_day1', '_day2'))
Я хотел бы иметь набор данных, похожий на этот, но с правильной перестановкой дней.
id quest_day1 day_day1 act 1_day1 act 2_day1 act 3_day1 act 4_day1 quest_day2 day_day2 act 1_day2 act 2_day2 act 3_day2 act 4_day2
1 1 1 1 a a b c 2 2 a a b d
2 2 1 1 a a b d 2 2 c a b c
3 3 1 2 c d b a 2 1 a d b c
4 4 1 2 c a b e 2 1 d a b c
Уверен, что существует простое решение с dplyr для изменения блока данных.
Любое решение?
Возможно, вы захотите добавить желаемый результат на вопрос - мне непонятно, чего вы хотите. – eddi
Если вы измените свой пример на 'paste0' вместо' paste', у вас будут законные имена переменных R для работы. –