Я изучаю R (фокусируется на пакетах tidyverse ) и надеюсь, что кто-то может помочь в решении следующей проблемы, которая поставила меня в тупик.
У меня есть набор данных, который выглядит примерно так:
library("tibble")
myData <- frame_data(
~id, ~r1, ~r2, ~r3, ~r4, ~r5, ~r6, ~r7, ~r8, ~r9, ~r10, ~r11, ~r12, ~r13, ~r14, ~r15, ~r16,
"A", 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
"B", 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
"C", 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2,
"D", 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2,
"E", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
)
По сути, у меня есть несколько строк данных респондентов, и каждый респондент дал 16 ответов либо «1», либо «2».
Для каждого респондента (т.е. для каждой строки) я хотел бы создать дополнительные три столбца:
В первом новом столбце, называемом «switchCount», указывается, сколько раз респондент переключался с ответа «2» на ответ «1».
Во втором новом столбце, называемом «switch1», указывается индекс первого времени, когда респондент переключился с ответа «2» на ответ «1».
В третьем новом столбце, называемом «switch2», указывается индекс окончательного времени, когда респондент переключился с ответа «2» на ответ «1».
Если переключателя нет и все значения равны «2», вернуть индекс 0. 0. 1022 *
Если переключателя нет и все значения равны «1», вернуть индекс 16.
Окончательный набор данных должен выглядеть следующим образом:
myData <- frame_data(
~id, ~r1, ~r2, ~r3, ~r4, ~r5, ~r6, ~r7, ~r8, ~r9, ~r10, ~r11, ~r12, ~r13, ~r14, ~r15, ~r16, ~switchCount, ~switch1, ~switch2,
"A", 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1,
"B", 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
"C", 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 3, 9,
"D", 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 3, 6, 15,
"E", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 16, 16
)