Контекст
Я хотел бы создать два фиктивных кадра данных опроса для проекта.Один фрейм данных содержит ответы на опрос Relationship
, а другой на опрос Pulse
.
Вот как выглядит каждый из них -
Фрейм данных отношений
#Relationship Data
rel_data= data.frame(
TYPE=rep('Relationship',446),
SURVEY_ID = rep('SURVEY 2018 Z662700',446),
SITE_ID=rep('Z662700',446),
START_DATE= rep(as.Date('2018-07-01'),446),
END_DATE= rep(as.Date('2018-07-04'),446)
)
Импульсный фрейм данных
#Pulse Data
pulse_data= data.frame(
TYPE=rep('Pulse',525),
SURVEY_ID = rep('SURVEY 2018 W554800',525),
SITE_ID=rep('W554800',525),
START_DATE= rep(as.Date('2018-04-01'),525),
END_DATE= rep(as.Date('2018-04-04'),525)
)
Моя цель
Я бы хотел добавить столбцы к каждому из этих двух кадров данных на основе условий из справочной таблицы .
Справочная таблица состоит извопросы, которые будут добавлены к каждому из двух фреймов данных опроса, вместе с дополнительной информацией по каждому задаваемому вопросу.Вот как это выглядит
Справочная таблица
#Reference Table - Question Bank
qbank= data.frame(QUEST_ID=c('QR1','QR2','QR3','QR4','QR5','QP1','QP2','QP3','QP4','QP5','QP6'),
QUEST_TYPE=c('Relationship','Relationship','Relationship','Relationship','Relationship',
'Pulse','Pulse','Pulse','Pulse','Pulse','Pulse'),
SCALE=c('Preference','Satisfaction','Satisfaction','Satisfaction','Preference','NPS',
'Satisfaction','Satisfaction','Satisfaction','Preference','Open-Ended'),
FOLLOWUP=c('No','No','No','No','No','No','Yes','No','Yes','No','No'))
Шаги
Для каждого кадра данных опроса (Pulse), я хотел бы сделать следующее -
1) Найти соответствующие коды вопросов в справочной таблице и добавить только эти вопросы в кадр данных.Например, кадр данных Relationship
будет иметь только коды вопросов, относящиеся к TYPE = 'Relationship'
из справочной таблицы.И то же самое для Pulse
фрейма данных.
2) Ответы на каждый вопрос будут условно добавляться к каждому фрейму данных.Вот условия -
- Если
SCALE = 'Preference'
в Справочной таблице, то ответы будут либо 150,100,50,0 or -50
.Кроме того, эти числа будут генерироваться в в любом случайном порядке. - Если в справочной таблице
SCALE = 'NPS'
, то ответы будут варьироваться от 0 to 10
.Числа будут сгенерированы таким образом, чтобы Чистая оценка промоутера (NPS) равнялась 50%. Напоминание: NPS = Процент от 9 с и 10 с минус Процент от 0 с до 6 с. - Если в справочной таблице
SCALE = 'Satisfaction'
, то ответы будут варьироваться от 1 (Extremely Dissatisfied) to 5 (Extremely Satisfied)
.Числа будут сгенерированы таким образом, чтобы процентное отношение к 1 с и 2 равнялось 90%. - Если в справочной таблице
SCALE = 'Open-Ended'
, то гарантирует, что столбец пуст (т.е. не содержит ответов).
Моя попытка
Использование этого ранее заданного вопроса для создания условного ответа и этого Чтобы добавить столбцы из справочной таблицы, я попытался решить проблему.Но я еще не получил то, что искал.
Буду признателен за любые входные данные
Желаемый вывод
Мой желаемый выводТаблицы будут выглядеть так:
Выходные данные кадров данных
TYPE SURVEY_ID SITE_ID START_DATE END_DATE QR1 QR2 QR3 QR4 QR5
1 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 150 5 1 2 2
2 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 100 1 2 2 2
3 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 100 4 5 2 2
4 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 150 1 1 2 2
and so on
И Импульсные выходные данные кадров данных
TYPE SURVEY_ID SITE_ID START_DATE END_DATE QP1 QP2 QP3 QP4 QP5 QP6
1 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 7 1 3 3 100
2 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 8 5 3 1 100
3 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 3 1 4 3 100
4 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 1 2 4 3 100
and so on