У меня есть набор данных, в котором есть ряд столбцов, которым предшествует следующее соглашение "викторина {число между 1-33}. {Имя_переменной}".Так, например, "quiz.1.player.trial_counter" или "quiz.33.submitted_answer"
В настоящее время я собираю эти столбцы следующим образом:
dat[, c(names(data[, grep('quiz\\.[0-9]*.', names(dat))]))]
Каждая строкаиндивидуальные ответы.Я хочу иметь столбец, который извлекает число из каждого из предисловий теста, и другой столбец, описывающий переменную.
Допустим, у меня есть этот упрощенный набор данных:
dat <- read.table(text="ID quiz.1.player.question quiz.1.player.solution quiz.2.player.question quiz.2.player.solution
Trx1 A Yes 4 No
Trx1 B Maybe 5 No
Trx2 E No 6 Why
Trx2 B Yes 8 Yes
Trx3 B Definitely 9 Maybe
Trx3 C Yes 8 Yes
Trx5 F No 7 Why
Trx5 D Maybe 0 Ha", header=T)
Вот часть желаемого примера вывода
output <- read.table(text="id quiz_number key value
Trx1 1 player.question A
Trx1 1 player.solution Yes
Trx1 2 player.question 4
Trx1 2 player.solution No
Trx2 1 player.question B
", header=T)
Я пробовал разные вещи с gather
иseparate
и extract
, но не могу понять, как добиться желаемого эффекта.