Создание новой переменной на основе определенных строк двух других переменных в длинном отформатированном наборе данных - PullRequest
0 голосов
/ 18 февраля 2019

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

В следующем фрейме данных содержатся данные для двух участников ("человек")представлены 2 изображения (P1, P2, P3), каждое с 3 повторениями (R1, R2, R3), которое является переменной «фаза».Переменная ответная реакция включает в себя две вещи: оценку для каждой презентации (от -30 до 30) и эмоции, испытываемые на снимке.

person <- c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2)
block <- c(4, 4, 4, 5, 5, 5, 8, 8, 4, 4, 4, 5, 5, 5, 8, 8)
phase <- c("P1R1", "P1R2", "P1R3", "P2R1","P2R2","P2R3", "Post1", "Post2","P1R1", 
    "P1R2", "P1R3", "P2R1","P2R2","P2R3", "Post1", "Post2")
response <- c(30, 30, 30, -30, -30, -30, "Happy", "Sad", 28, 27, 25, -23, -24,
    -22, "Excited", "Scared")
df <- data.frame(person, block, phase, emotion, response)

Мне нужно создать новый столбец, который будет основан на номере блока идайте мне эмоции за картинку.

Я бы хотел, чтобы новый столбец назывался «постпросмотр», и ожидал, что он будет следующим:

postsurvey <-c ("Happy", "Happy", "Happy","Sad","Sad", "Sad", NA, NA, 
    "Excited", "Excited", "Excited", "Scared", "Scared", "Scared", NA, NA)
df <- data.frame(person, block, phase, emotion, response, postsurvey)

Код, который я использовал:

df<-df  %>% group_by(person, block) %>%
mutate(postsurvey=if(block==4){response[phase=="Post1"]}  
      else if (block==5){response[phase=="Post2"]} 
   else {print("NA")})

Я ожидаю, что каждый субъект получит для каждого номера блока один и тот же ответ, но я получаю то, что ответ не группируется по субъектам и не повторяется в субъекте по номеру блока,как будто существует вектор эмоций, и человек получает эмоции, которые не принадлежат ему.

* В моих исходных данных у меня есть 4 изображения на предмет с 10 повторениями, поэтому код «если-то» повторяется с более чемдва условия.

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